upstream ws {
server 1.1.1.1:8888;
}
server {
server_name aa.ym;
listen 80;
location / {
proxy_pass http://ws;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
最重要的就是在反向代理的配置中增加了如下兩行
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
這里面的關(guān)鍵部分在于HTTP的請(qǐng)求中多了如下頭部:
Upgrade: websocket
Connection: Upgrade
這兩個(gè)字段表示請(qǐng)求服務(wù)器升級(jí)協(xié)議為WebSocket。服務(wù)器處理完請(qǐng)求后,響應(yīng)如下報(bào)文:
// 狀態(tài)碼為101
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: upgrade