如果你使用了 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