0

Ich habe einen Knoten js Anwendung in Elastic Bean Stiel.Wir denken über die Verwendung von Socket io für eine Funktion.Socket Io in AWS ElasticBeanStalk Knoten

Ich habe an einigen Stellen gelesen, dass die Socket-io-Unterstützung in AWS elasticbeanstalk manuell aktiviert werden muss. Insbesondere wenn es den Standard-NGINX-Proxy verwendet.

Ich lese Standardmäßig hat eine Elastic Beanstalk-Instanz einen Nginx-Proxy davor, der nicht konfiguriert ist, um WebSockets zuzulassen.

Sind das richtige Informationen? Wenn ja, wie kann die Socket-io-Unterstützung in AWS EB aktiviert werden?

Antwort

1

Dies sind korrekte Informationen. Sie müssen einige zusätzliche Konfigurationsschritte für Ihre Elastic Beanstalk-Bereitstellung ausführen, damit WebSockets (Socket.io oder andere) funktionieren.

Sobald Sie Ihre Elastic Beanstalk-Umgebung zu erstellen, müssen Sie Ihre Load Balancer konfigurieren TCP-Verbindungen zu akzeptieren, und fügen Sie zu Ihrem Knoten Projekt Stammverzeichnis einer Konfigurationsdatei:

Konfigurieren von Load Balancer:

  • Head over auf Ihrer EC2-Konsole und wählen Sie die Registerkarte Balancers laden
  • die Load-Balancer auswählen, die
  • aus die Liste Ihrer ELB Umgebung gehört
  • die Registerkarte Hörer wählen
  • Ändern Sie die Instanz Protocol auf TCP Standardeinträge

der Konfigurationsdatei hinzufügen:

  • Im Stammverzeichnis des Knotens Projekt erstellen Ordner .ebextensions

Erstellen Sie eine Datei enable-websockets.config in Ihren neuen .ebextensions Ordnern mit den folgenden Inhalten genannt:

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

Diese Datei der NGINX Reverse-Proxy, wie Sie den HTTP 101 Upgrade-Statuscode zu behandeln, die WebSockets mit dem Anwendungsserver kommunizieren müssen.

+0

Können Sie mir bitte erklären, was der Befehl macht? – Jocket

+0

Meine http URL funktioniert gut.Es verwendet WS selbst. Aber wenn ich das https benutze, schaltet es auf Polling um. Weißt du warum? – Jocket

+1

@Jocket Der Befehl fügt die Zeilen nach 'sed -i' zur temporären NGINX-Konfigurationsdatei hinzu, die Elastic Beanstalk während der Bereitstellung verwendet. Es gibt derzeit keine Möglichkeit, direkt auf die NGINX-Konfigurationsdateien von EB zuzugreifen. Daher müssen diese während der Laufzeit/Bereitstellung geändert werden. Was Ihr HTTPS-Problem betrifft, müssen Sie ein SSL-Zertifikat für den TCP-Listener Ihres Components-Port 443 konfigurieren. Ich bin sicher, dass Sie Details dazu in den AWS-Dokumenten finden. Wenn Sie diese hilfreich gefunden haben, überlegen Sie bitte, ob Sie die Antwort als angenommen markieren oder markieren! –