如何配置Nginx以获取代理服务IP及客户端真实IP

最新资讯发布日期:2023-12-28

在使用Nginx作为代理服务器时,获取客户端真实IP地址是非常重要的。在实际应用中,Nginx作为反向代理服务器,将客户端请求转发给后端服务,因此需要正确获取客户端的真实IP地址。本文将介绍如何配置Nginx以获取代理服务IP及客户端真实IP。

如何配置Nginx以获取代理服务IP及客户端真实IP

获取代理服务IP

在Nginx配置中,可以通过内置变量$proxy_host来获取代理服务的IP地址。该变量会返回Nginx向上游服务器发送请求的主机名或IP地址。在需要获取代理服务IP的场景下,可以使用$proxy_host变量来记录或处理请求。

```nginx

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for" '

'"$proxy_host"';

server {

listen 80;

server_name example.com;

location / {

access_log /var/log/nginx/access.log main;

proxy_pass http://backend;

}

}

```

在上述配置中,log_format定义了日志格式,其中包含了$proxy_host变量用于记录代理服务IP。在具体的location中,使用proxy_pass将请求转发给后端服务,并且记录了代理服务IP地址。


获取客户端真实IP

由于Nginx作为代理服务器,客户端请求经过代理后,服务器端收到的请求中会包含代理服务器的IP地址而非客户端的真实IP地址。为了获取客户端真实IP地址,需要配置Nginx来传递客户端IP信息。


X-Forwarded-For

一种常见的方式是通过X-Forwarded-For头部来传递客户端真实IP地址。在Nginx中,可以通过设置proxy_set_header指令来添加X-Forwarded-For头部信息,从而将客户端真实IP地址传递给后端服务。

```nginx

server {

listen 80;

server_name example.com;

location / {

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://backend;

}

}

```

在上述配置中,通过proxy_set_header设置X-Forwarded-For头部信息为$proxy_add_x_forwarded_for,该变量会将客户端真实IP地址添加到X-Forwarded-For头部中。这样后端服务就能够获取到客户端真实IP地址。


Real IP 模块

另一种方式是使用Nginx的Real IP模块来获取客户端真实IP地址。Real IP模块可以通过设置real_ip_header和real_ip_recursive指令来指定从哪个头部获取客户端真实IP地址,并且支持递归查找。

```nginx

set_real_ip_from 192.168.1.0/24;

real_ip_header X-Forwarded-For;

real_ip_recursive on;

server {

listen 80;

server_name example.com;

location / {

real_ip_header X-Forwarded-For;

proxy_pass http://backend;

}

}

```

在上述配置中,通过set_real_ip_from指令指定了信任的代理服务器IP段,real_ip_header指定了从X-Forwarded-For头部获取客户端真实IP地址,并且开启了递归查找。这样就能够通过Real IP模块获取客户端真实IP地址。

通过以上介绍,我们了解了如何在Nginx中获取代理服务IP及客户端真实IP地址。对于代理服务IP,可以使用$proxy_host内置变量来获取;对于客户端真实IP地址,可以通过设置X-Forwarded-For头部信息或者使用Real IP模块来传递和获取。在实际应用中,根据具体场景和需求选择合适的方式来获取客户端真实IP地址,以确保系统安全和日志记录的准确性。


挂件 关闭
客服
二维码
客服二维码

加微信 领流量

大客户经理二维码

售前咨询,企业定制

专属客服竭诚为您服务