為 Nginx 啟用 WebSocket

前言

WebSocket 是一種網路傳輸協定,他可以建立一個不中斷的連線,來讓資料傳遞變得簡單。但是當撰寫 Nginx 的 Config 時,需要另外寫幾句話,才能讓 Nginx 啟用他。

操作步驟

1. 找到網站設定檔

我們要先找到網站設定檔,有些人可能放在 /etc/nginx/sites-enabled,也有些人放在 /etc/nginx/sites-available,反正你能找到他就好。

cd /etc/nginx/sites-enabled

2. 編輯設定檔

接下來找到該網站的設定檔,並編輯他。這邊假設檔名為 example

sudo vim example

3. 新增幾行字

接著在你想要啟用 WebSocket 的段落加上幾行文字,如果想為整個網站啟用,你也可以寫在 location / {} 裡面。

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

完整內容可能最後會長得像是這樣。

server {
    listen 80;
    server_name www.example.com;

    server_tokens off;
    more_set_headers Server;

    location / {
        proxy_pass http://localhost:8080/;
        proxy_pass_request_headers on;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Remote-Addr $remote_addr;
        proxy_set_header X-Real-IP $http_x_real_ip;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

4. 重啟 Nginx

存檔退出後,我們需要重新啟動 Nginx。

sudo nginx -t && sudo systemctl restart nginx

現在,你的網站應該可以開始使用 WebSocket 囉!