Beenden Sie HTTP / 2 in AWS ALB

7

AWS Application Load Balancer-ALBs unterstützen HTTP / 2, und man könnte meinen, wir könnten auf diese umsteigen und sofort die Vorteile von HTTP / 2 nutzen.

Gibt es eine Möglichkeit, HTTP / 2 auf ALB zu beenden, sodass die Webserver nicht für die Unterstützung von HTTP / 2 konfiguriert werden müssen?

Sankalp Sharma
quelle

Antworten:

20

Gibt es eine Möglichkeit, HTTP / 2 in AWS Application ELB zu beenden, sodass die Webserver nicht für die Unterstützung von HTTP / 2 konfiguriert werden müssen?

Das müssen sie schon nicht sein.

Bei Application Load Balancer (ELB / 2.0) funktioniert dies sofort. Der ALB spricht mit den Instanzen über HTTP / 1.1, während HTTP / 2 mit dem Browser gesprochen wird, sofern der Browser dies unterstützt, andernfalls über HTTP / 1.x.

Sie können HTTP / 2 mit HTTPS-Listenern verwenden. Sie können bis zu 128 Anforderungen gleichzeitig über eine HTTP / 2-Verbindung senden. Der Load Balancer konvertiert diese in einzelne HTTP / 1.1-Anforderungen und verteilt sie mithilfe des Round-Robin-Routing-Algorithmus auf die fehlerfreien Ziele in der Zielgruppe. (Betonung hinzugefügt)

http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html

Michael - sqlbot
quelle
Vielen Dank, dass Sie sich die Zeit genommen haben, um zu antworten. Ich habe die Frage aktualisiert, um besser zu reflektieren, was ich versuche zu tun. Ich verwende zwar einen ALB mit HTTPS, möchte aber nicht, dass auf meinem Backend-Server (in meinem Fall Nginx) HTTPS oder HTTP / 2 ausgeführt wird. Tatsächlich möchte ich, dass HTTP / 2 am ALB selbst beendet wird.
Sankalp Sharma
1
@ SankalpSharma basierend auf Ihrem Kommentar, meine Antwort steht immer noch wie geschrieben. Ein HTTPS- Listener bezieht sich auf die dem Client zugewandte Seite des Balancers. Es muss kein HTTPS mit dem Back-End sprechen, es kann HTTP / 1.1 ohne TLS (SSL) sprechen. Was Sie tun möchten, ist, wie ALB bereits automatisch funktioniert.
Michael - sqlbot
Aber ich spreche von HTTP / 2, nicht von HTTPS :)
Sankalp Sharma
Ich habe bereits in der Antwort gesagt, dass die Instanzen nicht HTTP / 2-fähig sein müssen. Dann sagten Sie: "Ich möchte nicht, dass auf meinem Backend-Server (in meinem Fall Nginx) entweder HTTPS oder HTTP / 2 ausgeführt wird." Okay, großartig ... Also habe ich dann klargestellt, dass HTTPS auf der Instanz ebenfalls nicht erforderlich ist, genau wie HTTP / 2 nicht erforderlich ist. Die Instanzen müssen kein HTTP / 2 sprechen. Die Instanzen müssen kein HTTPS sprechen. Der ALB spricht weiterhin HTTP / 2 und HTTPS mit Clients, HTTP / 1.1 mit der Instanz. So funktioniert ALB immer und automatisch. Sie scheinen die Komplexität zu überdenken.
Michael - sqlbot
1
Dies ist das Standardverhalten. Es ist keine Konfiguration erforderlich.
Michael - sqlbot
3

ELB unterstützt HTTP2 nicht, ALB und CloudFront auch nicht . Sie könnten ELB in den TCP-Modus versetzen und HTTP2 über Ihren Webserver unterstützen, dies entfernt jedoch den Schutz, den Sie von einer ELB erhalten (es schützt Sie erneut vor einer Reihe von Angriffen, DDOS, SYN Flood usw.).

Wenn Sie HTTP / 2 benötigen, stehen Ihnen folgende Optionen in der Reihenfolge zur Verfügung, die ich für am besten halte:

  • Verwenden Sie CloudFront (Standorte einschränken, wenn Sie die Kosten niedrig halten möchten)
  • Verwenden Sie eine ALB
  • Verwenden Sie ELB im TCP-Modus mit HTTP2 auf Ihrem Webserver
Tim
quelle
Vielen Dank, dass Sie sich die Zeit genommen haben, um zu antworten. Ich denke, meine Frage war etwas falsch, also habe ich sie korrigiert. Ich verwende zwar ALB (Application Load Balancer), aber mein Backend-Server ist nicht für die Unterstützung von HTTP / 2 konfiguriert, und ich möchte dies (vorerst) auch nicht.
Sankalp Sharma
Ah ok. Ihr Back-End-Webserver muss nicht einmal https sein, geschweige denn http2 über https.
Tim
Ja, das ist es.
Sankalp Sharma