nginx代理后获取真实ip

nginx代理后获取真实ip

   张吉吉     2019年11月22日 03:05     1769    

当使用nginx做反向代理去代理tomcat,如果不做任何设置的话,tomcat访问日志中显示的ip就是上一级代理ip,或者内网ip。

如果是这样会在日常的运维中造成一些问题,或者在程序中如果获取真实ip的话也会出现获取到上一级代理ip的问题。

1.png

下边就是配置真实ip的方法

proxy_set_header   Host              $host;

把原http请求的Header中的Host字段也放到转发的请求里。

proxy_set_header   X-Real-IP          $remote_addr;

表示将客户端的地址,加入到http请求头部中;

proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;

表示如果中间经过多级代理,则将所有代理的IP全部加入请求头部中;

例如:http_x_forwarded_for = ClientIP,Proxy(1)IP,Proxy(2)IP等,全部加进去,是一个叠加的IP;在有多级代理的情况下,可以追踪一个响应的完整路径

说明:

如果只有一级代理时,只需要X-Real-IP就可以了;因为2者的结果是等效的。

如果有多级代理时,X-Forwarded-For记录的信息更加准确,所以不需要X-Real-IP。

2.png

下边就是tomcat日志配置内容。

3.png

下图就是获取的真实ip

4.png


文章评论

0

其他文章