首页 > 解决方案 > nginx 从 x-forwarded 获取源客户端 ip 以使用 map 模块

问题描述

ip 有请求流过 3 个 nginx 代理,并且 ip 得到了 x-forwarded-for 列表 ip:

192.168.10.222, 192.168.10.178, 192.168.10.179

如何使用地图模块获取第一个 ip?我找到了这个但不能让它工作:

map $proxy_add_x_forwarded_for $client_ip {

"~(?<IP>([0-9]{1,3}\.){3}[0-9]{1,3}),.*" $IP;

}

从这里开始:https ://webkul.com/blog/x-forwarded-for-header-in-nginx- contains-mulitple-client-ips

谢谢

标签: nginxx-forwarded-for

解决方案


这就是你要找的:

map $proxy_add_x_forwarded_for $client_ip {"~(?<IP>([0-9]{1,3}\.){3}[0-9]{1,3}),.*" $IP;}

它将 3 的第一个 ip 映射到变量 $client_ip。作为服务器和位置范围之外的一条线。


推荐阅读