Nginx→RocetChatの構成。
こちらの設定を入れる必要がある。
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が設定される。
全部載せの場合の例
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
