所以我一直在閱讀整個服務器設置,其中Nginx在nodejs之前用作反向代理,以便它在服務於靜態內容的同時允許節點執行動態內容。我的問題是,爲什麼有人希望使用nginx前端將代理轉換爲websocket?如果nginx提供靜態內容(HTML,CSS,JS,媒體等),那麼所提供的JS文件不能直接使用ip地址和websocket在nodejs中偵聽的端口連接到服務器服務器?爲什麼要通過nginx連接到服務器上的websocket?還是我不清楚這種情況?謝謝!爲什麼使用nginx作爲websocket代理?
回答
WebSocket應用程序在客戶端和服務器之間保持一個長時間運行的連接,以促進實時應用程序的開發。用於將連接從HTTP升級到WebSocket的HTTP升級機制使用升級和連接標頭。反向代理服務器在支持WebSocket時面臨一些挑戰。一種是WebSocket是逐跳協議,因此當代理服務器截獲來自客戶端的升級請求時,它需要將自己的升級請求發送到後端服務器,包括適當的標頭。另外,由於WebSocket連接的壽命很長,與HTTP使用的典型的短暫連接相反,反向代理需要允許這些連接保持打開狀態,而不是關閉它們,因爲它們看起來是空閒的。
NGINX通過允許在客戶端和後端服務器之間建立隧道來支持WebSocket。對於NGINX從客戶端發送的升級請求傳遞給後臺服務器,升級和連接頭必須顯式設置,如下例所示:
location /wsapp/ {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
一旦做到這一點,NGINX交易以此爲WebSocket連接。
欲瞭解更多詳情,請訪問: - https://www.nginx.com/blog/websocket-nginx/ https://blog.martinfjordvald.com/2013/02/websockets-in-nginx/
希望這將有助於!
你已經解釋了'如何',但我想知道'爲什麼'。當你直接引用nodejs服務器的ip地址和端口時,你爲什麼要使用Nginx作爲反向代理,而不必通過Nginx?因此,當您的靜態內容(例如js文件)需要與節點通信時,您將使用Nginx btu提供所有靜態內容,並直接與其建立WebSocket連接。你明白我的觀點嗎? – TheMAAAN
確定使用nginx的一個原因是代理傳遞你可以使用它來保護你的API你可以暴露或顯示API給前端一個不同的代理通過你可以將它重定向到另一個API你給出的實際API名稱這將保護你的代碼。其次,您可以使用nginx輕鬆啓用gzip壓縮和縮小,並且您的網站排名很高。您還可以使用nginx將您的圖像和文件編入索引。你也可以使用nginx作爲流媒體服務器。 –
所以如果你直接連接,你不會得到這些功能(除非你自己編程)。如果Nginx與nodejs進程位於同一臺機器上,該怎麼辦?你仍然可以利用你列出的功能嗎? – TheMAAAN
- 1. 使用nginx作爲docker的代理
- 2. nginx的配置作爲代理的WebSocket的
- 3. 的Nginx作爲安全的WebSocket轉發代理(WS - > WSS)
- 4. Nginx作爲Lighttpd的代理
- 5. Nginx作爲Apache的代理
- 6. Nginx作爲Exchange代理
- 7. nginx作爲郵件代理
- 8. nginx反向代理websocket
- 9. Nginx反向代理websocket
- 10. 通過nginx代理的websocket?
- 11. 如何使用Nginx作爲我的RabbitMQ的websocket函數的反向代理?
- 12. 爲什麼Node.js作爲後臺Node.js應用程序的代理而不是Nginx?
- 13. 爲什麼NGINX想要使用./logs/error.log作爲默認值?
- 14. 爲什麼要使用websocket,使用它有什麼好處?
- 15. 爲什麼代理不使用上httpasyncclient
- 16. 爲什麼映射websocket不工作?
- 17. 的Nginx作爲反向代理
- 18. Nginx作爲反向代理與v 1.10.3
- 19. NgInx作爲Kong的反向代理
- 20. Nginx作爲Apache的反向代理
- 21. 當nginx用作代理時,爲什麼Rails中間件開銷如此之高?
- 22. Nginx:反向代理WebSocket草案76
- 23. Nginx反向代理Websocket驗證 - HTTP 403
- 24. nginx 1.2.0 - socket.io - HTTP/1.1 - 代理websocket連接
- 25. Nginx Websocket反向代理拋出錯誤
- 26. Nginx WebSocket反向代理限制
- 27. 轉到websocket,nginx代理是否正確?
- 28. nginx websocket反向代理配置
- 29. 2分鐘後Nginx websocket代理斷開
- 30. 爲什麼Nginx默認使用'accept_mutex'''?
你會得到nginx的安全模型。任何(比如說)你在主站點上設置的ip地址/引用者限制也適用於websocket。 –
你應該閱讀此... http://stackoverflow.com/questions/224664/difference-between-proxy-server-and-reverse-proxy-server – JClarke
@Jclarke抱歉使用術語「代理」我編輯我的問題使用術語「反向代理」。但是,我的問題仍然存在.. – TheMAAAN