Nginx作爲websocket的反向代理

使用nginx做websocket的反向代理在網上一找一大推,然後也按照這種方式進行了配置(其它配置忽略)

http {

        map $http_upgrade $connection_upgrade {
          default upgrade ;
          '' close ;
        }

    server{

                location /ws/ {
                proxy_pass http://192.168.3.1:9000/;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;

                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             }
}

然而調試的時候得到了以下的響應

Handshake status 403 None
### closed ###

起初一直以爲是後端服務器的問題,經過幾番週轉,最後發現還是nginx配置的問題,可以在location中添加以下的配置來解決這問題

proxy_set_header Origin '';

最終的正確配置爲

http {

        map $http_upgrade $connection_upgrade {
          default upgrade ;
          '' close ;
        }

    server{

                location /ws/ {
                proxy_pass http://192.168.3.1:9000/;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_set_header Origin '';

                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章