¿Cómo personalizo nginx en AWS elástico beanstalk para cargar el Meteor?

Estoy ejecutando Meteor en AWS Elastic Beanstalk. Todo está en funcionamiento, excepto que no ejecuta Websockets con el siguiente error:

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

Mi novedad fue agregar algo como:

proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";

A la configuración del proxy, a través de mi archivo de configuración YML.

A través de mi archivo de configuración .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"; 

Tengo ssh’d en el servidor y puedo ver el proxy.conf con esas dos líneas en él.

Cuando llego a mi servidor web, todavía veo el error “Error durante el protocolo de enlace de WebSocket:”.

Tengo mi carga beanstalk configurada con sesiones de stick y los siguientes puertos:

introduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquí

Por cierto, vi https://meteorhacks.com/load-balancing-your-meteor-app.html y traté de:

Enable HTTP load balancing with Sticky Session on Port 80 Enable TCP load balancing on Port 8080, which allows websocket Pero tampoco parece que eso funcione.

Agregando otra oportunidad a algún YAML que NO funciona aquí “: https://gist.github.com/adamgins/0c0258d6e1b8203fd051

¿Alguna ayuda apreciada?

Con MUCHA ayuda de AWS, recibí este trabajo. La realidad es que no estaba muy lejos, se redujo a algún syntax de SED.

Esto es lo que funciona actualmente ( Gist ):

 option_settings: - option_name: AWS_SECRET_KEY value:  - option_name: AWS_ACCESS_KEY_ID value:  - option_name: PORT value: 8081 - option_name: ROOT_URL value:  - option_name: MONGO_URL value:  - option_name: MONGO_OPLOG_URL value:  - 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 

Además de esto, debe ingresar a su equilibrador de carga y cambiar el servicio de escucha de HTTP a TCP:

introduzca la descripción de la imagen aquí

descrito aquí: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.elb.html ).

¿Has comprobado el error de intercambio de manos de Meteor WebSocket 400 con nginx ? Creo que su configuración puede ser un poco diferente de la tuya. Estoy en el mismo barco que tú, tratando de hacer que funcione exactamente la misma configuración.