ContexteWebsocket travaille sur url EC2, mais pas sur l'URL ElasticBeanstalk
Je proxy inverse (nginx) pointant vers ElasticBeanstalk (ELB) qui est un type d'environnement SingleInstance et crée une instance EC2 (EC2). J'utilise une application nodejs nodejs. nginx est le point d'entrée de notre infrastructure.
Desciption
à partir du navigateur, je peux appeler directement les URL Websocket d'un EC2 et de ELB avec le même résultat:
Bienvenue sur SockJS!
Pour nginx J'utilise la configuration suivante (nginx conf.d/my.conf) où je change seulement les URL de EC2 ou ELB sur la ligne commençant par proxy_pass
:
location /stomp {
proxy_pass <{EC2_URL}/stomp OR {ELB_URL}/stomp>;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
Les Websockets sur le EC2 L'URL ne fonctionne que très bien.
Websockets sur le ELB URL renvoient un statut d'erreur à mon client:
code: 1002, raison: "Impossible de se connecter au serveur"
La chose la plus étrange est que mon nginx serveur n'enregistre même pas les demandes dans le cas de ELB.
Question
Pourquoi le ELB ne fonctionne pas dans le nginx configuration? Comment le corriger?
Qu'est-ce que j'ai essayé?
J'ai vérifié une question et un blog où ils des conseils à passer outre les fichiers de configuration nginx comme 00_elastic_beanstalk_proxy.conf
situé dans located in /tmp/deployment/config/etc#nginx#nginx.conf
. Mais mon serveur n'a pas de fichiers de configuration nginx sur le système de fichiers ...
Alors, où nginx tourne-t-il dans votre cas? –
À quel port vous connectez-vous? L'installation Load Balancer par défaut peut uniquement prendre le trafic du port 80 ou du port 443. Si vous utilisez SSL, avez-vous un certificat configuré avec ElasticBeanstalk? Si vous n'obtenez jamais la demande du côté Nginx, il se peut que vous ne puissiez jamais effectuer de transfert à partir de votre équilibreur de charge. Pour voir votre équilibreur de charge, vous devez aller à EC2 -> Load Balancers sur le panneau AWS. – jonzlin95
@ jonzlin95 Nous nous connectons via le port 80. Il n'y a pas d'équilibreurs de charge dans 'EC2 → Load Balancers', mais ce n'est pas une surprise. Parce que nous utilisons uniquement le type d'environnement ELB avec SingleInstance. – zatziky