手机版 收藏 导航

Nginx如何获取客户端IP地址

原创   www.link114.cn   2024-03-16 14:02:32

Nginx如何获取客户端IP地址

$remote_addr是Nginx内置的一个变量,它存储客户端连接的远程地址。这是最简单直接的获取客户端IP地址的方式,可以直接在Nginx配置文件中使用该变量。例如:


location / {
    echo $remote_addr;
}

当Nginx位于代理服务器(如负载均衡器)之后时,直接使用$remote_addr可能无法获取到客户端的真实IP地址,而是代理服务器的IP地址。此时可以使用$http_x_forwarded_for变量,它存储客户端的真实IP地址。但前提是代理服务器需要在转发请求时,在HTTP头部添加X-Forwarded-For字段。例如:


location / {
    echo $http_x_forwarded_for;
}

除使用HTTP头部,Nginx还支持使用代理协议(Proxy Protocol)来获取客户端IP地址。这需要在Nginx配置中启用代理协议支持,并且代理服务器需要按照代理协议的规范发送客户端IP信息。使用$proxy_protocol_addr变量即可获取客户端IP地址。