一条大河

Nginx 在有 CDN 情况下获取真实请求 IP

服务器使用 Nginx 并且上游嵌套了 CDN,难免会遇到一个问题:“请求日志中记录的都是 CDN IP 而非实际请求 IP” 。众所周知,这样不利于网站管理,或者说难以规避一些恶意的风险。

解决这个问题不复杂,只需要在 Nginx 的 Http 段添加如下配置即可:

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

以宝塔面板为例,在 “软件商店 > 已安装 > Nginx > 右侧设置 > 配置修改 ” 找到如下位置加入配置:

image.png

其他备注信息(不会技术的朋友可以忽略):

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 就是真实的。

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

(完)

发表评论

◎发表您的看法、交流您的观点,保持友善言论。

搜索
近期留言
近期发表
站点标签
©
 iddahe.com / PHP函数速查 / 盗版反馈 / 服务器推荐 / 需求定制 / 使用协议
一条大河(一会儿是风,一会儿是水) Z-BlogPHP 驱动 / Theme: Hipaper / RSS / Sitemap