使用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對象進行消息收發和處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM