如何在nginx中使用PHP设置websockets?
我看过这个教程,但不能让它工作
https://www.sanwebe.com/2013/05/chat-using-websocket-php-socket
已将三个文件复制到www目录的根目录中
的index.php
/jquery-3.1.1.js
/websocket/server.php
在index.php中,我更改了URI
var wsUri = "wss://domain.com/websocket/server.php";
在nginx中我添加了这个
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
location /websocket/ {
proxy_pass https://domain.com:9000/websocket/server.php;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
}
http://nginx.org/en/docs/http/websocket.html
启动websocket服务器
php -q /var/www/websocket/server.php
聊天位于https://domain.com/chat.php并加载,但在聊天窗口中出现此错误发生错误 – 连接已关闭
还试图通过此工具连接,但得到此错误
http://www.websocket.org/echo.html
ERROR: undefined
DISCONNECTED
如果通过浏览器请求
wss://domain.com/websocket/server.php
ERR_DISALLOWED_URL_SCHEME
您在nginx配置中使用端口9000,而PHP的内置Web服务器在端口8000上运行.
尝试将端口更改为8000并查看是否可以解决该问题.
proxy_pass http://domain.com:8000/websocket/;
编辑:
关于ERR_DISALLOWED_URL_SCHEME
自从版本50以来,Chrome要求所有websocket通信都通过SSL.您可能需要启用此功能才能让您的应用在Chrome中运行.
你有两个选择:
>使用受信任的证书颁发机构颁发的证书
>手动将证书添加到受信任的证书根目录.您的Web应用程序不适用于未手动执行此操作的任何人