分享关于用nginx做后端服务器时,日志记录不到客户机真实IP的问题


场景描述:

利用nginx做反向代理服务器,反向代理后端web服务器资源给用户(也是nginx服务)。

问题:

启用nginx服务的后端服务器web日志记录不能正确的记录客户机发起访问的IP地址,而是记录nginx代理服务器的地址(内网);

解决方法:

调用nginx服务中的--with-http_realip_module 模块

nginx -V

查看nginx版本以及所安装的模块,检查是否带有--with-http_realip_module模块

 

我这边是通过yum安装的nginx,没有指定模块就默认全部安装,所以包含该模块;

如果不存在该模块,请参考此篇文章:

yum安装下的nginx,如何添加模块,和添加第三方模块 - caigan - 博客园 (cnblogs.com)

————————————————————————————

当模块安装完毕后;需要进行如下两步操作:

一、在nginx代理服务器的location块内,添加如下配置:

proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

二、在nginx的web服务器的http块内、server块外添加如下配置:

set_real_ip_from x.x.x.x;

x.x.x.x对应的ip地址为nginx代理服务器的地址。

进行上述两步操作后,都需要重启nginx服务;

systemctl restart nginx
service restart nginx

后续查看web服务器的nginx访问日志就能正确记录客户机IP地址了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM