📜  proxy_pass real ip (1)

📅  最后修改于: 2023-12-03 15:18:42.920000             🧑  作者: Mango

使用 proxy_pass 实现真实 IP 地址的传递

在使用 Nginx 反向代理时,有一种常见的问题是获取真实的客户端 IP 地址。在默认情况下,Nginx 会将经过反向代理的 HTTP 请求中的 X-Forwarded-For 头中的内容作为客户端 IP 地址。然而,该头信息是可以被伪造的,因此不是完全可靠的。为了获取更加可信的客户端 IP 地址,我们可以通过在 Nginx 配置中使用 proxy_pass 及其它相关指令来实现。

实现方法

以下是一份给出了如何通过 proxy_pass 实现真实 IP 地址传递的 Nginx 配置示例:

server {
    listen 80;
    server_name example.com;

    # 关键配置:将客户端的真实 IP 地址传递到后端服务器
    proxy_set_header X-Real-IP $remote_addr;

    location / {
        # 后端服务器地址,这里以示例中的 127.0.0.1:8080 为例
        proxy_pass http://127.0.0.1:8080;

        # 后端服务器的真实 IP 地址,一般来说,需要根据实际情况进行修改
        proxy_set_header Host $host;

        # 传递协议头
        proxy_set_header X-Forwarded-Proto $scheme;

        # 传递协议版本号
        proxy_set_header X-Protocol-Version HTTP/1.1;
    }
}

关键的配置指令为 proxy_set_header X-Real-IP $remote_addr;,该指令将客户端的真实 IP 地址传递给后端服务器。同时,我们也可以通过 proxy_set_header 指令设置其它头信息,如 HostX-Forwarded-ProtoX-Protocol-Version 等,以便后端服务器能够正确地识别客户端请求。

总结

通过使用 proxy_pass 实现真实 IP 地址传递,我们可以获取更加可信的客户端 IP 地址,并在后端服务器中做进一步的处理。需要注意的是,在实际使用过程中,需要根据实际情况对 Nginx 配置作出相应的修改,以确保其能够正确地传递客户端 IP 地址及其它相关信息。