Nginx中反向***的proxy_set_header不生效的问题
最近复习反向***的时候可谓几经波折,基本知识可以看我另外一篇https://blog.nowcoder.net/n/e0528dbb55024ee1834189e979db78f2
Nginx做反向***的具体配置如下
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm index.php; # proxy_pass http://10.50.2.129/; # proxy_set_header Host $host; # proxy_set_header X-real $remote_addr; } location /txt/ { # root html; # index index.html index.htm index.php; proxy_pass http://10.50.2.129/; proxy_set_header Host $host; proxy_set_header XRealIP $remote_addr; } }
然后就访问10.50.2.133,看看是不是能成功到后端服务器10.50.2.129,后端服务器我用Apache
需注意的点是保证能够互相通信,并访问,防火墙策略记得允许
然后查看Apache的日志,看看访问的源地址是否为客户端访问的地址,如果不是或者配置完访问失败的问题,那就看我总结的如下原因:
1.在Nginx***服务器这里,配置时proxy_set_header后面跟的名字注意下划线,最好用‘-’这个来代替,如果一定要用下划线那就记得加参数underscores_in_headers on;
2.$$remote_addr这些不要写成,我就把钱前面的符号写成@了
3.在后端服务器中,需要获取这个重定义的头部,我在Apache的配置文件中这样改
<IfModule log_config_module> LogFormat "%{XRealIP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%{XRealIP}i %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%{XRealIP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" common </IfModule>
就是里面的XRealIP就是我改的。格式不写错即可