客户端在访问互联网应用服务器时,与真实的应用服务器之间会因为有多层反向代理,而导致真实应用服务器获取的仅是最近一层的反向代理服务器 IP。为使 Nginx 后端的上游服务器可以获得真实客户端 IP,Nginx 提供了 ngx_http_realip_module 模块用以实现真实客户端 IP 的获取及传递的功能。
通过该模块提供的配置指令,用户可以手动设置上层反向代理服务器的 IP 作为授信 IP,Nginx 服务器根据配置指令的配置排除授信 IP,而甄别出真实的客户端 IP 进行日志记录,并传递给上游服务器。模块配置指令如下表所示。
指令名称 |
指令值格式 |
默认值 |
指令说明 |
set_real_ip_from |
address 或 CIDR 或 unix |
-- |
设置授信 IP,IP 网段或 UNIX 套接字 |
real_ip_header |
field 或 X-Real-IP 或 X-For-warded-For 或 proxy_protocol |
X-Real-IP |
通过指定的 HTTP 头字段获取真实客户端 IP |
real_ip_recursive |
on 或 off |
off |
当客户端经多层反向代理到达当前服务器时,指定的 HTTP 头字段中会有多个 IP 地址。默认会以最后一个 IP 为真实客户端 IP,当指令值为 on 时,会以最后一个非信 IP 为真实客户端 IP文章来源:https://www.toymoban.com/news/detail-792732.html |
该模块指令使用的指令域范围为http、server、location。配置样例如下:文章来源地址https://www.toymoban.com/news/detail-792732.html
server {
listen 8088;
access_log logs/proxy.access.log main;
set_real_ip_from 192.168.2.159; # 设置192.168.2.159为授信IP
real_ip_header X-Forwarded-For; # 通过HTTP头字段X-Forwarded-For获取真实客户端IP
real_ip_recursive on; # 以最后一个非授信IP为真实客户端IP
tcp_nodelay off; # 因启用缓冲区功能,所以关闭立刻发送功能
location ~ ^/ {
proxy_force_ranges on; # 强制启用字节范围请求支持
proxy_pass http://192.168.2.145:8082;
break;
}
}
到了这里,关于Nginx(二十) 获取真实客户端IP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!