# Nginx 反向代理
# 反向代理模块是由ngx_http_proxy_module进行解析的
# proxy_pass指令:用来设置被代理服务器地址,可以是主机名称、IP地址加端口号形式。
# 位置:location
# 语法:proxy_pass URL;
server {
  listen 8080;
  server_name localhost;
  location /server {
    # proxy_pass http://192.168.1.100;
    proxy_pass http://192.168.1.100/;
    # 地址后面的斜杠加和不加的区别
    # 当客户端访问 http://192.168.1.100/server/index.html
    # 不加斜杠,就变成了 http://192.168.1.100/server/index.html
    # 加斜杠,就变成http://192.168.1.100/index.html
    # 也就是加了斜杠就是替换location中的/server为访问的uri。
  }
}

# proxy_set_header指令:该指令可以更改Nginx服务器接收到客户端请求头信息,然后将新的请求头发送给代理的服务器。
# 语法:proxy_set_header field value;
# 默认值:proxy_set_header Host $proxy_host;
# proxy_set_header Connection close;
# 位置:http、server、location
proxy_set_header username TOM;

# proxy_redirect指令:该指令是用来重置头信息中的"location"和"Refresh"的值的。
# 具体说明:假设192.168.1.100是代理服务器,192.168.1.200是服务器地址
# 当浏览器输入http://192.168.1.100/index.html访问服务器的时候,访问的是代理服务器,而实际上页面的内容是在服务器上
# 所以代理服务器需要代理访问http://192.168.1.200/index.html,
# 而http://192.168.1.200/index.html这时候处理结果是重定向到http://192.168.1.200/other.html
# 如果代理服务将192.168.1.200服务器返回的内容原封不动的返回到浏览器的话,那么浏览器的URL就会重定向到http://192.168.1.200/other.html了
# 这样就暴露了我们服务器的真实地址了
# proxy_redirect就是通过重置头信息中的"location"和"Refresh"的值来处理这个问题的。
# 语法:proxy_redirect redirect replacement;
#       proxy_redirect default;
#       proxy_redirect off;
# 位置:http、server、location
# 参数说明:redirect为目标location的值,replacement是要替换的值
# default:就是location块的uri变量的值。
# off:关闭proxy_redirect功能。
# 例子:
server {
  listen 8081;
  server_name 192.168.1.100;
  location / {
      proxy_pass http://192.168.1.200/
      proxy_redirect http://192.168.1.200/ http://192.168.1.100/;
  }
}
server {
  listen 80;
  server_name 192.168.1.100;
  location / {
    proxy_pass http://192.168.1.200:8080/
  }
}