如何使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;
}
}
解决方法:
问题是stream_socket_get_name()在文件句柄上运行.在这种情况下,文件句柄始终连接到您的代理,因此您只能获取代理信息.但你看到那些proxy_set_header指令?这些是远程IP的方式,远程端口可以传入.在PHP中,您必须检查标头的值.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。