簡體   English   中英

如何在AWS彈性beanstalk上自定義nginx以對Meteor進行負載均衡?

[英]How do I customize nginx on AWS elastic beanstalk to loadbalance Meteor?

我在AWS Elastic Beanstalk上運行Meteor。 一切都正常運行,除了它沒有運行帶有以下錯誤的Websockets:

WebSocket connection to 'ws://MYDOMAIN/sockjs/834/sxx0k7vn/websocket' failed: Error during WebSocket     handshake: Unexpected response code: 400 

我的不足之處是添加如下內容:

proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";

到代理配置,通過我的YML配置文件。

通過我的.exbextension配置文件:

files:
"/etc/nginx/conf.d/proxy.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
        proxy_set_header        Upgrade         $http_upgrade;
        proxy_set_header        Connection      "upgrade";

我已經ssh進入服務器,我可以看到proxy.conf中包含這兩行。

當我點擊我的網絡服務器時,我仍然看到“WebSocket握手期間的錯誤:”錯誤。

我的beanstalk負載配置了stick會話和以下端口:

在此輸入圖像描述在此輸入圖像描述

順便說一句,我確實看到了https://meteorhacks.com/load-balancing-your-meteor-app.html ,我試圖:

Enable HTTP load balancing with Sticky Session on Port 80 Enable TCP load balancing on Port 8080, which allows websocket但似乎無法使其工作。

在一些不起作用的YAML上添加另一個鏡頭“: https//gist.github.com/adamgins/0c0258d6e1b8203fd051

任何幫助表示贊賞

在AWS付費支持的幫助下,我得到了這個工作。 現實情況是我離一些SED合成器不遠了。

這是目前的工作( Gist ):

option_settings:

  - option_name: AWS_SECRET_KEY
    value: <SOMESECRET>

  - option_name: AWS_ACCESS_KEY_ID
    value: <SOMEKEY>

  - option_name: PORT
    value: 8081

  - option_name: ROOT_URL
    value: <SOMEURL>

  - option_name: MONGO_URL
    value: <SOMEMONGOURL>

    - option_name: MONGO_OPLOG_URL
    value: <SOMEMONGOURL>

  - namespace: aws:elasticbeanstalk:container:nodejs
    option_name: ProxyServer
    value: nginx

    option_name: GzipCompression
    value: true

  - namespace: aws:elasticbeanstalk:container:nodejs:staticfiles

    option_name: /public
    value: /public

    container_commands:

  01_nginx_static:
    command: |
      sed -i '/\s*proxy_set_header\s*Connection/c \
              proxy_set_header Upgrade $http_upgrade;\
              proxy_set_header Connection "upgrade";\
        ' /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf

除此之外,您還需要進入負載均衡器並將偵聽器從HTTP更改為TCP:

在此輸入圖像描述

這里描述: http//docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.elb.html )。

用nginx檢查了Meteor WebSocket握手錯誤400嗎? 我認為他們的配置可能與您的配置略有不同。 我和你在同一條船上,試圖讓這個完全相同的設置工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM