Ich habe mich gefragt, ob Nginx HTTP- und HTTPS-Anforderungen auf demselben Port verarbeiten kann . [*]
Das versuche ich zu tun. Ich verwende einen Webserver (lighttpd), der http-Anforderungen verarbeitet, und ein C-Programm, das über https einen bestimmten Abschnitt der Dokumentstruktur bedient. Diese beiden Prozesse werden auf demselben Server ausgeführt.
Auf der Firewall-Ebene kann ich nur einen Port für die Weiterleitung von Datenverkehr auf diesen Server haben . Also, was ich tun möchte, ist, Nginx auf diesem Server so einzurichten, dass es auf Anfragen an einem einzelnen Port wartet und dann:
A) leitet alle http://myhost.com/ * Anfragen um, so dass sie zu localhost gehen: 8080 (wo lighttpd lauscht)
B) Wenn ein Benutzer eine URL anfordert, die beispielsweise mit https: // myhost.com/app beginnt, sendet er diese Anforderung an localhost: 8008 (C-Programm). Beachten Sie, dass in diesem Fall der Datenverkehr zwischen dem Remote-Browser und Nginx verschlüsselt werden muss.
Glaubst du, das könnte möglich sein? Wenn ja, wie geht das?
Ich weiß, wie das mit zwei verschiedenen Ports geht. Die Herausforderung, der ich gegenüberstehe, besteht darin, dies mit nur einem einzigen Port zu tun (leider habe ich keine Kontrolle über die Firewall-Konfiguration in dieser bestimmten Umgebung, das ist also eine Einschränkung, die ich nicht vermeiden kann). Techniken wie Reverse-Port-Weiterleitung über ssh zur Umgehung der Firewall werden ebenfalls nicht funktionieren, da dies für Remotebenutzer funktionieren sollte, die nur einen Webbrowser und eine Internetverbindung haben.
Wenn dies über die Möglichkeiten von nginx hinausgeht, kennen Sie ein anderes Produkt, das diese Anforderungen erfüllen könnte? (Bisher habe ich es nicht geschafft, dies mit lighttpd und pound einzurichten). Ich würde es auch vorziehen, Apache zu meiden (obwohl ich bereit bin, es zu verwenden, wenn es die einzig mögliche Wahl ist).
Danke im Voraus, Alex
[*] Um es klar zu sagen, ich spreche über die Behandlung von verschlüsselten und unverschlüsselten HTTP-Verbindungen über denselben Port. Es spielt keine Rolle, ob die Verschlüsselung über SSL oder TLS erfolgt.