解决Nginx和CDN嵌套上的请求日志记录问题

图片[1]-解决Nginx和CDN嵌套上的请求日志记录问题

如果你使用了 Nginx 服务器并且将CDN嵌套到上游中,有时候你会遇到一个问题:请求日志中记录的都是CDN IP而不是实际请求IP。这可能会导致一些不便,如难以管理网站或规避一些恶意风险。

但是这个问题的解决并不复杂,只需在Nginx的HTTP段添加如下配置:

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;

对于一些朋友来说,这可能比较困难,以下是一些额外的提示:

1.set_real_ip_from用于指定上游代理转发服务器的IP地址或IP段,可以理解为一个白名单,所有这些IP的请求都应该做真实IP获取处理。在这个教程中,设置的0.0.0.0/0表示所有请求IP。

2.real_ip_header用于指定从哪个请求头中获取真实IP,通常上游CDN会发送HTTP_X_FORWARDED_FOR请求头,其中包含来路的IP串,如”127.0.0.1,127.0.0.2,127.0.0.3″。通常情况下,获取第一个不为空的IP就是真实IP。

3.此教程以宝塔为例,宝塔环境下安装的Nginx自带ngx_http_realip_module支持获取真实IP的模块。如果是默认编译安装的Nginx,可能不存在此模块,需要自行安装并启用才能使配置生效。安装模块的方法不在本文赘述。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享