Wie in dem von Ihnen verlinkten Blogbeitrag darauf hingewiesen (und bestätigt, wenn er hier in offizielle Dokumente umgewandelt wurde ), verwendet IIS das HTTP / 2-Protokoll nur, wenn eine TLS-Verbindung zum IIS-Server hergestellt wurde.
Wie heute in IIS 10 implementiert, wird HTTP / 2 während des TLS-Handshakes mithilfe von ALPN identifiziert. Wenn es weder ein ALPN noch ein TLS gibt, wird kein HTTP / 2 verwendet. Sehen Sie sich diesen BUILD-Vortrag ab 2015 ab etwa 5'06 "an und denken Sie daran, dass IIS den HTTP / 1.1-Aktualisierungsmechanismus nicht implementiert (wie im Video bei 8'46" angegeben).
In Ihrem Szenario ist es höchstwahrscheinlich der Fall, dass der Load Balancer klare TCP-Verbindungen herstellt und HTTP / 1.1-Anforderungen an die Back-End-Server sendet. Zu dem Zeitpunkt, an dem IIS den x-forwarded-proto
Header sogar sehen kann, wurde die Verbindung bereits hergestellt und das Protokoll HTTP / 1.1 wurde bereits identifiziert.
Jetzt ist es möglich, dass Ihr Load Balancer HTTP / 2 selbst unterstützen kann, sodass die Browser der Endbenutzer Anforderungen und Antworten mit dem Load Balancer multiplexen können, während diese Anforderungen in HTTP / 1.1-Anforderungen und Antworten auf Ihre Back-End-Server übersetzt werden .
Es ist auch möglich, dass Ihr Lastenausgleichsnetzwerk TLS-Verbindungen zu den Back-End-Servern herstellen und HTTP / 2 verwenden kann. Dies würde jedoch meistens den Punkt der SSL-Abladung übergehen.