Erstellen Sie eine Reverse-Proxy-in NodeJS, dass in der Lage mehrere domains sichern
Ich versuche, erstellen Sie eine reverse-proxy-in NodeJS. Aber ich laufen das Problem, dass ich kann nur dienen, die ein ein-Satz von cert/key-paar auf dem gleichen port(443), obwohl ich dienen will mehrere domains. Ich habe die Forschung getan und laufen in der gleichen Straße block:
- Ein Knoten-Skript dienen kann, mehrere domains sichern-Domäne von nicht-sicheren lokale Quelle (http lokal zugegriffen und serviert https öffentlichen)
- Lassen Sie mich dynamisch server-SSL-Zertifikate über domain-header
- Beispiel:
- https ://www.someplace.com:443 ziehen von http ://thisipaddress:8000, und verwenden Sie die cert und key Dateien für www.someplace.com
- https ://www.anotherplace.com:443 ziehen von http ://thisipaddress:8080 und verwenden Sie die cert und key Dateien für www.anotherplace.com
- ect.
- Ich habe mir mit NodeJS ist https.createServer(options, [requestListener])
- Aber diese Methode unterstützt nur eine cert/key pair pro port
- Ich kann nicht einen Weg finden, um dynamisch switch-CERT auf Basis der domain-header
- Ich kann nicht Fragen, mein Volk zu verwenden, benutzerdefinierte https-ports
- Und ich werde führen Sie zu durchsuchen SSL-Zertifikat-Fehler, wenn ich die dazu dienen, die gleiche SSL-Zertifikat für mehrere domain-Namen, auch wenn es sicher ist
- Ich schaute Knoten-http-proxy aber soweit ich es sehen kann, hat die gleichen Einschränkungen
- Ich sah in Apache mod-proxy und nginx, aber ich hätte lieber etwas, das ich mehr direkte Kontrolle über
Wenn jemand kann mir zeigen, ein Beispiel für mehrere sichere Domänen, jede mit Ihrer eigenen Zertifikat von der gleichen Portnummer (443) mit NodeJS und entweder https.createServer oder Knoten-http-proxy ich wäre Schuld Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Redbird tatsächlich tut dies sehr elegant und nicht zu schwer zu konfigurieren.
https://github.com/OptimalBits/redbird
Es gibt keine domain, header, also ich denke, du meinst den Host-header in der HTTP-Anforderung.
Aber das wird nicht funktionieren, weil
In früheren Zeiten würden Sie benötigen, um eine einzelne IP-Adresse für jedes SSL-Zertifikat. Die aktuellen Browser unterstützen SNI (server name indication), die zum senden des zu erwartenden Ziel-host bereits innerhalb der SSL-Ebene. Es sieht aus wie node.js unterstützt diese, suchen
SNICallback
.Aber Vorsicht, es gibt immer noch genug Bibliotheken gibt, die entweder nicht SNI-Unterstützung auf der client-Seite oder wo man braucht es explizit. Aber, so lange Sie nur wollen, zu unterstützen Browser diese ok sein sollte.
Bouncy ist eine gute Bibliothek, dies zu tun und hat ein Beispiel, was Sie brauchen.
Als Steffen Ullrich sagt, es hängt von der browser-support für it -
Hier ist die Lösung, die Sie vielleicht an, sein Blick
Ich fand es sehr nützlich für meine Umsetzung
wenn Sie brauchen, um große Anpassung zu handhaben domains
Knoten-http-rev-proxy:
https://github.com/nodejitsu/node-http-proxy
Wie über das erstellen der SSL-Server auf unterschiedlichen ports und Knoten-http-proxy als server auf 443 relais die Anfrage basierend auf der Domäne.
Sie haben erklärt, Sie wollen nicht zu verwenden, nginx, und ich verstehe nicht warum. Sie können einfach setup mehrere Standorte für Ihre nginx. Jede von Ihnen zu hören, verschiedene Hostnamen und alle auf port 443.
Geben Sie ein proxypass, um Ihre nodejs server. In meinem Verständnis dient, dass alle Ihre Anforderungen und ist Stand der Technik.