使用Nginx代理和转发Websocket连接
1.Websocket 簡介
WebSocket協議是基于TCP的一種新的網絡協議。它實現了瀏覽器與服務器全雙工(full-duplex)通信——允許服務器主動發送信息給客戶端。
2.Nginx 簡介
Nginx是一個反向代理服務器,所有的來自瀏覽器的請求必須經過Nginx。
通常的正向代理服務器,只用于代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,并將本來要直接發送到Web服務器上的http請求發送到代理服務器中,此時客戶機是主動方。
而在反向代理中,web服務器是主動方,客戶機必須經過代理才能訪問。
3.Uwsgi 簡介
所謂后端APP,即一套用來處理客戶端請求的邏輯部分的程序;
所謂WSGI,即python用來web開發的協議標準;
所謂uWSGI,即一個即可以充當web服務器,又可以作為中間件的程序;
所謂uwsgi,是uWSGI基于WSGI實現的自用的一個協議;
4.配置Nginx代理Websocket連接
一 Nginx監聽80端口,并轉發到443端口。即默認使用https傳輸。
二 在443端口,開啟ssl,設置證書。
如果監聽到指定websocket連接,設置websocket協議升級,具體配置如下:
proxy_connect_timeout 2s ... proxy_pass https://clusters ... proxy_set_header X-Real_IP $remote_addr_IP proxy_set_header Host $host proxy_set_header X_Forward_For $X_Forward_For proxy_http_version 1.1 proxy_set_header Upgrade $http_upgrade proxy_set_header Connection 'upgrade'三 監聽另一端口,配置同上,并將消息轉發給uwsgi端口,交付給uwsgi處理。
5.前后端發送和處理Websocket消息
前端使用javascript接口新建websocket對象,并監聽websocket.onmessage事件,進行消息接受和處理。并通過websocket.send()接口進行消息發送。
后端uswgi框架使用類似的websocket對象進行消息收發和處理。
總結
以上是生活随笔為你收集整理的使用Nginx代理和转发Websocket连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx转发websocket
- 下一篇: Nginx背景介绍