Nginx→RocetChatの構成。
こちらの設定を入れる必要がある。
1 2 3 4 5 6 |
location /chat/ { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } |
proxy_http_version
HTTPプロトコルバージョンを定義する。
websocketに必要なkeepaliveはバージョン1.1以上で利用可能。
デフォルトが1.0なので明示的に指定する必要がある。
proxy_set_header Upgrade $http_upgrade;
プロトコルスイッチという仕組みで、HTTP/1.1からWebsocketへ変更する。
proxy_set_header Connection “upgrade”;
送信先にコネクションを維持するか否かを伝えるヘッダー。
upgradeまたはcloseが設定される。
全部載せの場合の例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
server { listen 443 ssl; listen [::]:443 ssl; server_name rocketchat.g-service.net; ssl_certificate /etc/nginx/cert/fullchain.pem; ssl_certificate_key /etc/nginx/cert/privkey.pem; location / { proxy_pass http://127.0.0.1:3000/; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_bypass $http_upgrade; #proxy_redirect off; } } |
参考
https://qiita.com/YuukiMiyoshi/items/d56d99be7fb8f69a751b
http://nginx.org/en/docs/http/websocket.html