nginx反向代理proxy_set_header说明

2021-07-23 22:27:41

记录proxy_set_header设置

用途

设定被代理服务器接收到的header信息

  • 允许重新定义或添加字段传递给代理服务器的请求头
  • 值可以包含文本、变量和它们的组合
  • 没有定义时会继承之前定义的值

语法:

proxy_set_header field value
  • field:变量名
  • value:变量值

默认值(只有两个字段被重定义):

proxy_set_header Host $proxy_host;
proxy_set_header Connection close;

配置说明

项目 说明
Host $http_host 服务器本身IP
X-Real-IP $remote_addr 前一节点IP(非用户真实IP)
X-Forwarded-For $proxy_add_x_forwarded_for 前一节点X-Forwarded-For值
X-Forwarded-Proto $scheme 浏览器在访问时的实际协议

X-Forwarded-For:
简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。 它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。
标准格式:X-Forwarded-For: client1, proxy1, proxy2。值通过一个“逗号+空格”把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。

变量$host、$http_host、$proxy_host区别说明:

变量名 是否显示端口
$host 不显示端口 浏览器请求的ip
$http_host 端口存在则显示 浏览器请求的ip和端口号
$proxy_host 默认80端口不显示,其它显示 被代理服务的ip和端口号

标准配置示例

server {
    listen 80;
    server_name www.xxx.com;

    location /
    {
        proxy_pass http://xxx.com;
        proxy_set_header host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

参考资料

本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

扫描下方二维码阅读当前文章

浏览器、微信扫码

评 论:

好文推荐
每天进步一点点~