主要是请求头设置,websocek在握手阶段用http,请求头upgrede websocket代表升级为websocket
http {
include mime.types;
default_type application/octet-stream;
access_log logs/access.log;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 9000;
server_name hello;
location /websocket/ {
proxy_pass http://backserver; #通过配置端口指向部署websocker的项目
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header X-Client-IP $remote_addr;
# proxy_set_header Upgrade "websocket";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
}
}
}
http://backserver是服务端,如果访问 /web/websocket/test会转发到 http://backserver/web/websocke/test.
如果proxy_pass 值是http://backserver/ws,则访问 /web/websocket/test会转发到 http://backserver/ws/test.
也可以用upstream负载均衡
upstream backserver {
server 127.0.0.1:9000;
}