使用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;
}
}