Ich erstelle einen Proxy für eine interne API, damit Clients eine Verbindung herstellen können, ohne dass die selbstsignierten Zertifikate installiert sein müssen.
Clients (nur intern erstellt, im Besitz und verwendet) stellen über SSL eine Verbindung mit der Nginx-Box her, in der ich XSendfile verwende , um Anmeldeinformationen auf Anwendungsebene zu validieren (eine Rails-App). Wenn die Anmeldeinformationen gültig sind, wird die Verbindung an nginx zurückgegeben, wo sie mithilfe von proxy_pass die Verbindung an den Upstream-Server sendet.
Das funktioniert jetzt hervorragend für Standard-HTTP-Verbindungen, aber ich versuche herauszufinden, wie wir unsere Zertifikate in den Mix aufnehmen können.
Diese Frage ist fast identisch mit dieser , aber mit umständlichen Zertifikatanforderungen.
Ist das überhaupt mit Nginx möglich? Gibt es eine bessere Lösung?
Ich würde mich auch mit http von client -> nginx und selbstsigniertem Zertifikat von nginx an die API begnügen.
quelle
proxy_ssl_server_name on;
Das war alles, was ich brauchte, um dieses Problem zu lösen, wenn ich Datenverkehr über das integrierte, von Google verwaltete SSL an einen Host in Google App Engine weiterleitete! (Dies ist kein selbstsigniertes Zertifikat oder ähnliches, daher wird nur diese eine Zeile benötigt). Danke für den tollen Tipp.Ich denke, Sie möchten wahrscheinlich so etwas (offensichtlich vereinfacht für dieses Beispiel):
Das einzige, was Sie möglicherweise ändern müssen, ist, den "Host" explizit anzugeben - wenn beispielsweise Ihr Proxy-Hostname nicht mit dem Hostnamen übereinstimmt, der auf dem Nginx-Proxyserver verwendet wird.
quelle
Für alle, die dies in Zukunft bemerken, habe ich Nginx letztendlich nicht verwendet.
Stattdessen habe ich stunnel im "Client-Modus" verwendet. Sehr einfach einzurichten und macht genau das, was ich brauche.
quelle