![](/img/trans.png)
[英]How to deploy a Node.js WebSocket server to Amazon Elastic Beanstalk?
[英]Issue using websocket with elastic beanstalk, nginx and node.js
我正在嘗試在EB上使用sock.js部署node.js應用程序。 Websockets無需代理即可正常工作。 使用Nginx代理時,出現ws連接問題。 我已經添加了.ebextensions / .config文件:
files:
"/etc/nginx/conf.d/wssproxy.conf":
mode: "000644"
owner: root
content: |
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
Websockets不起作用,但是nginx錯誤日志顯示:
上游過早關閉連接,同時讀取上游,客戶端:83.219.138.215,服務器:,請求:“ POST x / XXXXX / 432 / 2l4e2j6v / xhr_streaming HTTP / 1.1”,上游:“ http://xxx.0.0.1:8081 / XXXXX / 432 / 2l4e2j6v / xhr_streaming “,主機:” XXXXXX.elasticbeanstalk.com“,引薦來源網址:” http://XXXXXX.elasticbeanstalk.com/ “這可能是由於您的負載均衡器未確定地將請求映射到第7層(HTTP)和第4層(websockets)上的上游服務器。 您會注意到,您提供的錯誤消息顯示您正在使用xhr-streaming,該功能適用於第7層。我猜測如果僅強制執行websocket協議或HTTP輪詢,這些錯誤將變得更加一致,但它們不會走開。
這是帶有一些可能解決方案的更詳細的說明。 不幸的是,它們都非常討厭實施。 以下問題是針對socket.io的,但是由於您正在使用sockjs,因此, 鑒於sockjs在HTTP輪詢請求路徑中使用服務器特定的ID的情況,理想的解決方案要容易得多 。
如果可以在ELB上使用確定性負載平衡方法(例如IP或HTTP路徑哈希),所有這些問題都將消失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.