欢迎访问LCE的博客,为你分享产品、技术、设计方面的作品实践和心得。

nginx反向代理,使后端nginx日志可以打印真实访客IP

默认 lce 6个月前 (01-21) 209次浏览 已收录 0个评论 扫描二维码

有个网站,采用了前后端分离的架构。也就是域名指向前端服务器,前端服务器收到请求后再转发给后端服务器。

前端服务器只安装了 nginx,通过 proxy_pass 把用户的访问请求转给后端服务器处理。后端服务器安装的是 lnmp 服务,即 nginx+php-fpm+mysql。收到前端服务器的请求后转给 PHP 处理,再通过前端服务器返回给用户。

由于后端服务器是和前端服务器直接交互,所以 nginx 的输出日志里面,IP 地址是前端服务器的 IP 地址。这样就不容易知道真实访客的 IP 地址。

通过设置,可以使后端 nginx 显示真实访客的 IP 地址,而不是前端服务器的 IP 地址。

首先,要确保后端 nginx 集成了 real_ip 模块。linux 上通过命令 nginx -V,即可看到:

nginx反向代理,使后端nginx日志可以打印真实访客IP

如上图,如果看到有–with-http_realip_module,就代表 nginx 已经集成了 real_ip 模块。

否则,需要重新编译 nginx。

编译也很简单,直接把 nginx -V 查看到的 nginx 编译选项复制,在后面加上
–with-http_realip_module 这个选项,再到 nginx 的源码目录执行./configure 就可以了。

比如:

./configure –user=www –group=www 此处省略若干字 –with-http_realip_module

如果没出现什么错误,就可以再 make;make install 就可以了。

然后,在 vhost 的设置中,增加

set_real_ip_from 127.0.0.1;
set_real_ip_from 前端服务器的 IP 地址;
real_ip_header X-Real-IP;

再重启 nginx 即可。

注:仅仅 nginx -s reload 是不行的。必须/etc/init.d/nginx stop 再 start 才好。


LCE的博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:nginx反向代理,使后端nginx日志可以打印真实访客IP
喜欢 (0)
[liuchn@vip.qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址