nginx中解析X-Forwarded-For中的第一个ip,并赋值给变量 real_client_ip
时间: 2024-03-20 13:44:39 浏览: 165
X-Forwarded-For Nginx 文档整理
可以使用nginx的ngx_http_realip_module模块来实现这个功能。该模块提供了一个set_real_ip_from指令,用于指定可以信任的代理服务器的IP地址或CIDR地址,以及一个real_ip_header指令,用于指定包含客户端真实IP的HTTP请求头字段名称。
下面是一个示例配置,将X-Forwarded-For中的第一个IP地址赋值给real_client_ip变量:
```
http {
# 指定可以信任的代理服务器的IP地址或CIDR地址
set_real_ip_from 192.168.1.1/24;
set_real_ip_from 10.0.0.0/8;
# 指定包含客户端真实IP的HTTP请求头字段名称
real_ip_header X-Forwarded-For;
# 定义一个名为real_client_ip的变量,用于存储解析出来的真实IP地址
map $realip_remote_addr $real_client_ip {
~^192\.168\..+ "";
default $realip_remote_addr;
}
server {
listen 80;
server_name example.com;
location / {
# 将real_client_ip变量的值赋给$remote_addr变量,以便后续的应用程序可以使用它
set $remote_addr $real_client_ip;
proxy_pass http://backend;
}
}
}
```
在上面的示例中,set_real_ip_from指令指定了可以信任的代理服务器的IP地址或CIDR地址,real_ip_header指令指定了包含客户端真实IP的HTTP请求头字段名称。map指令定义了一个名为real_client_ip的变量,用于存储解析出来的真实IP地址。最后,在location中使用set指令将real_client_ip变量的值赋给$remote_addr变量,以便后续的应用程序可以使用它。
阅读全文