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

问题解决 专栏收录该内容
30 篇文章 0 订阅

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服务

如果后端是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"/>

在这里插入图片描述
重启tomcat,查看访问日志文件

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值