如何在AWS弹性beanstalk上自定义nginx以负载均衡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";

到代理configuration,通过我的YMLconfiguration文件。

通过我的.exbextensionconfiguration文件:

 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。

当我打我的networking服务器,我仍然看到“错误在WebSocket握手:”错误。

我有用stick会话configuration我的beanstalk加载和以下端口:

在这里输入图像说明在这里输入图像说明

顺便说一句,我看到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 

除此之外,您还需要进入Load Balancer并将listner从HTTP更改为TCP:

在这里输入图像说明

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

你有没有用nginx检出Meteor WebSocket握手错误400 ? 我认为他们的配置可能与你的有所不同。 我和你在同一条船上,试图让这个完全相同的工作。