关于nginx:Nginx-proxysetheader设置

42次阅读

共计 1853 个字符,预计需要花费 5 分钟才能阅读完成。

nginx 代理罕用配置项

 server {
        listen       80;
        server_name  localhost;
        location /test119 {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://192.168.4.120:80;
        }

通过以下的案例来了解 proxy_set_header 设置

其中 backend 192.168.4.122 提前装置 nginx 第三方模块反对 “”echo”

=============192.168.4.119 proxy1 nginx.conf

 server {
        listen       80;
        server_name  localhost;
        location /test119 {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://192.168.4.120:80;
        }

=============192.168.4.120 proxy2 nginx.conf

server {
        listen       80;
        server_name  localhost;
        location /test {proxy_pass http://192.168.4.121:80;}

=============192.168.4.121 proxy3 nginx.conf

server {
        listen       80;
        server_name  localhost;
        location /test {
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://192.168.4.122:80;
        }

=============192.168.4.122 backend nginx.conf

server {
        listen       80;
        server_name  localhost;
        location /test {
             default_type text/html;
             charset gbk;
             echo "$remote_addr ||$http_x_real_ip  ||$http_x_forwarded_for"
        }
 在 192.168.44.254 上拜访 [http://192.168.4.119/test119](http://192.168.4.119/test119)

192.168.4.121 ||192.168.4.254 ||192.168.4.254, 192.168.4.120

有留神到 ||192.168.4.254, 192.168.4.120 是不蕴含 192.168.4.119

proxy_set_header Host $host;
本案例因为不波及到域名所以用不到 $Host 值, 作用也比拟好了解, 就是 nginx 做代理时, 把原 http 申请的 Header 中的 Host 字段也放到转发的申请里, 如果不加这一行的话,nginx 转发的申请 header 里就不会有 Host 字段, 而服务器是靠这个 Host 值来辨别你的申请的是哪个域名的资源的,

proxy_set_header X-Real-IP $remote_addr;
只能获取到与服务器自身直连的下层申请 ip 写入到 http 申请头中

proxy_set_header X-Real-IP $proxy_add_x_forwarded_for;
定义客户端 IP, 如果多层代理都有配置这个值, 离 backent 最近的会笼罩之前的值 所以个别只在连贯客户端的代理上写增加这条值, 这样 backend 就能获取到客户端的实在 IP, 独自应用有效

proxy_set_header X-Forwarded-For $http_x_forwarded_for;
把客户端 IP 写入到 http 申请头中, 前提是之前有 X -Real-IP $remote_addr 定义过客户端 IP, 所以独自应用有效

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
相当于 $http_x_forwarded_for 和 $remote_addr 和联合 获取下层 IP 和把客户端 IP 写入申请头中,

正文完
 0