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精品网络服务器。拒绝绕路,拒绝不稳定。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2024 年 01 月 10 日
如果觉得我的文章对你有用,请随意赞赏