Ubuntu
NGINX Websockets 和 SSL 配置
我正在嘗試設置 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。
您的 websocket 端點在提供的 nginx 配置中配置為託管在
/websocket
伺服器內的位置,但您正在嘗試連接到根 URLwss://domain.com
。在升級發生之前,websocket 連接是一個普通的 HTTP(在這種情況下帶有 TLS 包裝器)會話,因此您必須確保用於訪問服務的 URL 包含所有相關的路徑指示符,例如
wss://domain.com/websocket
.