Websockets mit AWS und Elastic Beanstalk

8

Ich versuche meine websockets mit Amazon Web Service und Elastic Beanstalk (ELB) zu arbeiten.

Ich habe ein Proxy-Protokoll eingerichtet nach: Ссылка

Ich habe den gesamten eingehenden Datenverkehr zu meinem Load Balancer und anderen Sicherheitsgruppen an allen Ports für alle IPs geöffnet.

Ich habe auch den Load-Balancer-Listener als HTTP an Port 80 gehalten.

Meine Websocket-Verbindung gibt den folgenden Fehler beim Verbinden auf Port 80: fehlgeschlagen: Fehler beim WebSocket-Handshake: Unerwarteter Antwortcode: 400

Und dieser Fehler an Port 8080: fehlgeschlagen: Fehler beim Verbindungsaufbau: net :: ERR_CONNECTION_REFUSED

Würde mich über Vorschläge freuen, ich stecke an diesem Punkt fest.

Danke!

    
Martok11 12.12.2014, 02:56
quelle

4 Antworten

5

Nach der Konfiguration der EC2-Sicherheitsgruppe wird Ihre Anwendung mit öffentlicher IP-Adresse arbeiten.

Aber Sie werden immer noch Probleme mit der Verwendung von EB URL haben. Um dieses Problem zu lösen, müssen Sie die EB-Konfiguration ändern.

  1. Gehen Sie zur EB-Umgebungsseite
  2. Konfiguration
  3. Im Abschnitt Load Balancing ändern Sie das Protokoll von HTTP zu TCP.

Jetzt können Sie auf EB URL klicken.

    
Nosyara 20.09.2016 22:27
quelle
2

AWS hat einen neuen Application Load Balancer eingeführt, der Web-Sockets unterstützt. Ändern Sie Ihren ELB in Application Load Balancer und das wird Ihr Problem beheben.

Ссылка

    
error2007s 20.09.2016 22:29
quelle
2

Sie sollten einen Reverse-Proxy für den Nginx-Server erstellen. Sie können diese Konfigurationsdatei in Ihren .extensions-Ordner aufnehmen, um Nginx-Unterstützung zu erhalten WS.

Ändern Sie in der Load-Balancer-Konfiguration des EBS auch das Protokoll von HTTP zu TCP.

Rufen Sie diesen Blog auf, um ein sicheres WebSocket einzurichten.

    
Anand S 07.10.2016 06:28
quelle
1

Ich suchte auch nach einer möglichen Problemumgehung für dieses Problem, aber es ist ziemlich einfach, unabhängig davon, welche Plattform Sprache Sie verwenden, um Websocket-Programm auf AWS EC2 zu entwickeln, wie in meinem Fall Node.js Nginx verwenden, sollte dies für alle funktionieren unterstützende Plattformen.

Sicherheitsgruppe konfigurieren

  1. Öffnen Sie in der AWS-Konsole die Registerkarte EC2.
  2. Wählen Sie die relevante Region und klicken Sie auf Sicherheitsgruppe.
  3. Sie sollten eine Elasticbeanstalk-Standard-Sicherheitsgruppe haben, wenn Sie haben eine Elastic Beanstalk - Instanz in dieser Region für Sie gestartet App.
  4. Klicken Sie oben auf Aktionen und wählen Sie Eingehende Regeln bearbeiten.
  5. Wählen Sie hier in der Spalte Typ die Option Alle TCP aus, oder Sie können ein benutzerdefiniertes TCP festlegen Regel auch an Ihrem WebSocket-Port zu hören.

    Und das ist es!

Hinweis: Wenn etwas nicht funktioniert, überprüfen Sie die Registerkarte "Ereignisse" in der Beanstalk-Anwendung / Umgebungen und finden Sie heraus, was schief gelaufen ist.

    
U.Swap 13.04.2016 09:20
quelle