我在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 ? 我认为他们的配置可能与你的有所不同。 我和你在同一条船上,试图让这个完全相同的工作。