首页

    nginx向后端传递真实客户端地址

    标签:nginx

    nginx http block用proxy_set_header就可以传递客户端ip
    stream block由于代理的是tcp,无法将客户端ip添加到http header里.这时就要用到PROXY protocol
    PROXY protocol简单的说,就是修改了点tcp协议,在协议里添加了一些信息,比如我们需要的客户端ip
    配置很简单,在stream里加上proxy_protocol on

    stream {
        ...
        server {
            listen 443;
            proxy_protocol on;
            proxy_pass 127.0.0.1:4430;
        }
    }
    

    既然修改了协议,backend也要支持PROXY protocol才行,否则无法握手成功

    http{
        server{
            listen 4430 ssl http2 fastopen=3 reuseport proxy_protocol;
        }
    }