nginx做代理后,connection_info获取不到真实client ip

client访问10.27.1.4:8888,nginx代理到10.27.1.5:9999的swoole应用上。 但是10.27.1.5:9999的$server->connection_info($fd)['remote_addr']是10.27.1.4,并不是client的真实ip

环境:
centos6.5
   nginx代理:10.27.1.4:8888
   swoole:10.27.1.5:9999
nginx1.10.1
swoole1.8.8

nginx.conf配置:

stream {
        upstream upstream_socket {
                hash $remote_addr consistent;
                server 10.27.1.5:9999 weight=5 max_fails=3 fail_timeout=30s;
        }

        server {
                listen 8888;
                proxy_connect_timeout 10s;
                proxy_timeout 1200s;
                proxy_pass abcsocket;
        }
}
2016-10-06 10:17
0
0

rui1642

赞同来自:

Nginx 要做转发客户端 IP 的配置 proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off;

2016-10-11 14:42
0

yc_CongY

赞同来自:

我也遇到了相同的问题 还在找解决方法 顶起来啊

2016-11-28 10:55
0

yc_CongY

赞同来自:

已经解决问题了 在请求的header里 x-real-ip 里就是真实IP $request->header[' x-real-ip']

2016-11-28 13:59
0

赞同来自:

学习了

2018-02-06 17:09
0

green - it

赞同来自:

通过这个$server->connection_info($fd)['remote_ip']属性获取

2016-10-11 10:32

要回复问题请先登录注册