nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中。
nginx反向代理配置时,一般会添加下面的配置:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
其中第一行关于host的配置,是关于域名传递的配置,余下跟IP相关。
做反向代理时通常会遇到一个问题,就是后端服务器的log全部记录的都是前端代理服务器的IP地址,并不是真实客户端的IP地址,所以需要处理一下! (查看一下后端服务器上的log就清楚了, 例如: /var/log/apache2/access.log)
查看并修改httpd配置文件
[root@web1 ~]# vi /etc/httpd/conf/httpd.conf
默认配置为:
LogFormat “%v:%p %h %l %u %t \”%r\” %>s %O \”%{Referer}i\” \”%{User-Agent}i\”” vhost_combined
LogFormat “%h %l %u %t \”%r\” %>s %O \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%h %l