我正在尝试设置 websocket 连接(wss)。我的域使用 ssl (certbot) 并由 Nginx 提供支持。我不确定如何配置我的/etc/nginx/sites-available/domain.com
文件。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
...
}
我将以下内容添加到我的配置块中:
location /websocket {
proxy_pass https://domain.com;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
通过以下方式连接时wss://domain.com/
,我收到错误:
WebSocket connection to 'wss://domain.com/' failed:
Error during WebSocket handshake: Unexpected response code: 200
大多数示例都使用 nodejs 框架来服务他们的网站,但我使用的是 php。
答案1
您的 websocket 端点在提供的 nginx 配置中配置为托管在/websocket
服务器内的位置,但您正在尝试连接到 root URL wss://domain.com
。
在升级之前,Websocket 连接是普通的 HTTP(在本例中带有 TLS 包装器)会话,因此您必须确保用于访问服务的 URL 包含所有相关的路径指示符,例如wss://domain.com/websocket
。