Php nginx代理转发和流\u套接字\u获取\u名称
如何使Php nginx代理转发和流\u套接字\u获取\u名称,php,nginx,websocket,Php,Nginx,Websocket,如何使stream\u socket\u get\u name从远程客户端返回真实的IP地址 $ip = stream_socket_get_name($socket, true); 上面的返回类似于127.0.0.1:39872 nginx 问题是stream\u socket\u get\u name()对文件句柄进行操作。在这种情况下,文件句柄始终连接到代理,因此只能获取代理信息。但是你看到那些proxy\u set\u header指令了吗?这些是远程IP和远程端口可以传递的方式。在P
stream\u socket\u get\u name
从远程客户端返回真实的IP地址
$ip = stream_socket_get_name($socket, true);
上面的返回类似于127.0.0.1:39872
nginx
问题是
stream\u socket\u get\u name()
对文件句柄进行操作。在这种情况下,文件句柄始终连接到代理,因此只能获取代理信息。但是你看到那些proxy\u set\u header
指令了吗?这些是远程IP和远程端口可以传递的方式。在PHP中,必须检查头的值。我的问题是如何获取这些头;)嗯,我从来没有为websocket编程过,但我猜它遵循PHP的惯例,即输入一个变量。你的问题是如何获得一个系统调用来获得它,这是行不通的。本机函数只是为了显示我想要实现的功能
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;
}
}