search("Nginx 4层代理 proxy_bind 真实IP 问题解决")
mclick([1, 2, 3])
end-searching
在Nginx的四层代理环境中,要传递真实的客户端IP,一种常见的方法是使用 X-Forwarded-For
头信息。根据我从网络上的资源了解到,这个头信息可以在多级代理环境下获取到正确的客户端IP,但前提是每台代理都必须设置 X-Forwarded-For
。如果有代理未设置此头信息,那么后端应用服务器可能无法获取到正确的客户端IP。
要实现这一功能,你可以在Nginx配置文件中使用 proxy_set_header
指令来设置 X-Forwarded-For
,例如:
server {
listen 80;
server_name your_server_name;
location / {
proxy_pass http://backend_server;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
在后端服务器上,你可以使用 nginx_http_realip_module
模块,通过设置 set_real_ip_from
来指定可信任的代理服务器IP,并通过 real_ip_header
指令告诉Nginx从 X-Forwarded-For
头中获取真实IP。例如:
server {
listen 80;
server_name your_backend_server_name;
set_real_ip_from proxy_server_ip;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
location / {
// your backend configuration
}
}
在此配置中,set_real_ip_from
用于定义可信任的代理服务器地址,而 real_ip_recursive on
指令用于递归排除每个代理服务器的IP。
这种方法的一个关键点是所有中间的代理都需要正确配置以传递客户端的IP。如果某个中间代理没有正确配置,最终的结果可能不准确。
参考资料:
云服务器/高防CDN推荐
蓝易云国内/海外高防云服务器推荐
海外免备案云服务器链接:www.tsyvps.com
蓝易云安全企业级高防CDN:www.tsycdn.com
持有增值电信营业许可证:B1-20222080【资质齐全】
蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。