socket.io server (wss://) behind nginx proxy server

สามารถพบได้ทั่วๆ ที่ใครก็จะแนะนำให้ใส่ config ประมาณนี้ เพื่อทำ reversed proxy ไปยัง socket.io ด้านหลัง

        location ^~ /socket.io/ {
                proxy_pass https://127.0.0.1:8089;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header Host $host;
        }

พอเราทำตามนี้กลับเจอ error WebSocket connection to 'wss://your-domain.com/socket.io/' failed: Error during WebSocket handshake: 'Upgrade' header is missing นี้ใน Console ของ Browser

Continue reading “socket.io server (wss://) behind nginx proxy server”

socket.io behind nginx (response code: 400)

เจอ error แบบนี้ใน console ของ browser

failed: Error during WebSocket handshake: Unexpected response code: 400

แก้โดยปรับ config ของ nginx ให้เป็นแบบนี้

location / {
  proxy_pass http://localhost:8080;
  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-Forwarded-For $proxy_add_x_forwarded_for;
}

(สีแดง คือ ที่เพิ่งเพิ่มเข้าไปทีหลัง แล้วมันแก้ปัญหาได้)