社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

nginx代理转发和流套接字获取名称

clarkk • 5 年前 • 427 次点击  

如何制作 stream_socket_get_name 从远程客户端返回真实的IP地址?

$ip = stream_socket_get_name($socket, true);

上面的返回类似于 127.0.0.1:39872

小精灵

server {
    listen 8443 ssl;
    server_name  websocket.example.com;

    ssl_certificate  /var/ini/ssl/public.crt;
    ssl_certificate_key  /var/ini/ssl/private.key;

    location / {
        proxy_redirect  off;

        proxy_pass  http://127.0.0.1:9000/;
        proxy_http_version  1.1;
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection "upgrade";
        proxy_read_timeout  300;

        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-Proto https;
        proxy_set_header  X-Forwarded-For $remote_addr;
        proxy_set_header  X-Forwarded-Host $remote_addr;
    }
}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38053
 
427 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Cupcake Protocol
Reply   •   1 楼
Cupcake Protocol    6 年前

问题是 stream_socket_get_name() 在文件句柄上操作。在这种情况下,文件句柄总是连接到代理,因此您只能获取代理信息。但是你看到了 proxy_set_header 指示?这就是如何传递远程IP和远程端口。在您的PHP中,您必须检查头的值。