it-swarm.com.de

Verwenden Sie HTTP / 2.0 zwischen Nginx Reverse-Proxy und Backend-Webserver

Ich verwende nginx als Reverse-SSL-Proxy vor einem Backend-Webserver, der HTTP/2.0 ausführen kann.

Ich habe festgestellt, dass nginx die Anforderungen über HTTP/1.1 und nicht über HTTP/2.0 an den Back-End-Server weiterleitet. Ist es möglich, nginx anzuweisen, stattdessen eine unverschlüsselte HTTP/2.0-Verbindung zu verwenden? Würde dies die Leistung steigern?

24
S1lentSt0rm

Gefunden dies: https://trac.nginx.org/nginx/ticket/92

In absehbarer Zeit ist keine Implementierung der HTTP/2-Unterstützung im Proxy-Modul geplant

Auszug aus einer Mail, auf die im Ticket verwiesen wird:

Es macht fast keinen Sinn, es zu implementieren, da der Hauptvorteil von HTTP/2 darin besteht, dass es das Multiplexen vieler Anforderungen innerhalb einer einzelnen Verbindung ermöglicht, wodurch die Begrenzung der Anzahl gleichzeitiger Anforderungen [fast] aufgehoben wird - und es gibt keine solche Begrenzung, wenn mit jemandem gesprochen wird deine eigenen Backends. Darüber hinaus kann es bei Verwendung von HTTP/2 für Backends sogar noch schlimmer werden, da eine einzelne TCP -Verbindung anstelle mehrerer Verbindungen verwendet wird).

26
S1lentSt0rm

Leider unterstützt nginx keinen Proxy für einen http/2-Backend-Server, auf den unter https: //www.nginx.com/blog/http2-module-nginx/#QandA verwiesen wird

F: Werden Sie HTTP/2 auch auf der Upstream-Seite oder nur HTTP/2 auf der Client-Seite unterstützen?

A: Im Moment unterstützen wir nur HTTP/2 auf der Clientseite. Sie können HTTP/2 nicht mit proxy_pass konfigurieren. [Editor - In der Originalversion dieses Beitrags wurde dieser Satz fälschlicherweise als "Sie können HTTP/2 mit proxy_pass konfigurieren" transkribiert. Wir entschuldigen uns für etwaige Unklarheiten.]

Aber wozu dient HTTP/2 auf der Backend-Seite? Wie Sie den Benchmarks entnehmen können, bietet HTTP/2 für Netzwerke mit geringer Latenz wie Upstream-Verbindungen keinen großen Nutzen.

Außerdem haben Sie in NGINX das Keepalive-Modul und können einen Keepalive-Cache konfigurieren. Der Hauptvorteil von HTTP/2 besteht darin, zusätzliche Handshakes zu vermeiden. Wenn Sie dies jedoch bereits mit einem Keepalive-Cache tun, benötigen Sie HTTP/2 auf der Upstream-Seite nicht.

7
tangxinfa