0
点赞
收藏
分享

微信扫一扫

解决nginx代理web服务器获取用户(访问者)真实IP的问题

nginx代理服务器配置

vi /etc/nginx/nginx.conf

在http模块下添加:
upstream webserver {
server 172.16.31.66 max_fails=1 fail_timeout=30;
server 172.16.31.208 max_fails=1 fail_timeout=30;
}
说明:
webserver为需要代理的集群名字(随便取)
server后面接的是后端具体服务器的IP地址,默认为80端口,如果是其他端口需要改成:172.16.31.66:8000
weight设置服务器权重值,默认值为1,越大处理的请求越多
max_fails设置最大失败次数
fail_timeout设置失败超时时间,单位为秒,每隔多长时间去检测

关闭代理服务器的访问日志

注释掉access_log  /var/log/nginx/access.log  main;这行
添加access_log nul;

在proxy_pass下添加如下行

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;
proxy_set_header X-ForZZwarded-Proto $scheme;
proxy_connect_timeout 10;
proxy_redirect default;

解决nginx代理web服务器获取用户(访问者)真实IP的问题_nginx代理获取真实IP
重启nginx服务

如果后端是nginx做WEB服务器,那么不需要做任何配置,就能在访问日志里看到真实IP

如果后端服务器是httpd,需要修改日志格式为

vim /etc/httpd/conf/httpd.conf

LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

如果后端是tomcat,需要修改conf/server.xml的日志格式为

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false"/>

解决nginx代理web服务器获取用户(访问者)真实IP的问题_nginx代理获取真实IP_02
重启tomcat,查看访问日志文件


举报

相关推荐

0 条评论