利用nginx的反向代理,埠指定部分路徑轉發Web Socket
阿新 • • 發佈:2019-01-11
因為專案的限制,主機僅對外開放80埠,但80埠又是被Web專案佔用的,所以為了構建Web Socket,我採取了nginx反向代理,使得部分路徑轉接到Web Socket服務(聆聽於另一埠)上。
nginx 配置如下:
upstream websocket { server 127.0.0.1:9001; #Web Socket 聆聽於9001埠 keepalive 32; } server { listen 80; server_name _; index index.html index.htm; root /home/www/web; location ~* /(video|text) { #匹配路徑 proxy_pass http://websocket; #轉發 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
最終效果為:
ws://192.168.0.111/video 被轉發至 ws://127.0.0.1:9001/video
注意,配置中的:
是為了將HTTP請求改寫成ws請求proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";