2015-10-21 27 views
6

Ich habe einen Master-Nginx-Server, der über den Namen des eingehenden Servers entscheidet, an den Anforderungen weitergeleitet werden sollen. Für zwei sekundäre Server hält dieser Master-Nginx-Server auch SSL-Zertifikate und Schlüssel. Der 3. Server hält seine eigenen Zertifikate und Schlüssel, da es einen häufigen Aktualisierungsprozess für diese gibt.nginx: Weiterleitung SSL-Verbindung zu einem anderen Server

Meine Frage ist jetzt, wie ich den Master-Nginx-Server konfigurieren kann, um alle Anfragen an Server 3 weiterzuleiten, die für diesen Server kommen. Ich kann die Zertifikate und Schlüssel nicht von Server 3 auf den Master-Server kopieren, da sie sich zu oft ändern.

overview servers and http(s) connections

Antwort

2

Hier ist eine Konfiguration, die funktionieren könnte. Proxy über den Master und alles an Server3 weiterleiten. Verwenden Sie den SSL-Port, deaktivieren Sie jedoch ssl.

server { 
    listen  443; 
    server_name myserver.mydomain.whatever; 

    ssl   off; 

    access_log  /var/log/nginx/myserver.access.log; 
    error_log  /var/log/nginx/myserver.error.og; 

    keepalive_timeout 60; 

    location/{ 
     set $fixed_destination $http_destination; 
     if ($http_destination ~* ^https(.*)$) 
     { 
      set $fixed_destination http$1; 
     } 

     proxy_set_header  Host $host; 
     proxy_set_header  X-Real-IP $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header  X-Forwarded-Proto $scheme; 
     proxy_set_header Destination $fixed_destination; 
     # Fix the “It appears that your reverse proxy set up is broken" error. 
     # might need to explicity set https://localip:port 
     proxy_pass   $fixed_destination; 
     # force timeout if backend died. 
     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
     proxy_read_timeout 90; 
     proxy_redirect http:// https://; 
    } 
} 
+0

Danke für Ihre Hilfe. Ich bin mir nicht ganz sicher, ob ich alles richtig mache. Was soll ich mit der Serverdefinition für 'listen 80;' machen? Umleiten Sie es auf 443 auf dem Master-Nginx-Server und verwenden Sie dann Ihr Codebeispiel? Wo geben Sie in Ihrem Beispiel an, an welche IP intern die Anfrage weitergeleitet wird? –

+0

Ich habe es in beide Richtungen getestet. Entweder bekomme ich einen Fehler im Nginx-Protokoll mit den Worten '2015/10/22 11:34:21 [Fehler] 18229 # 0: * 57916 ungültiges URL-Präfix in" ", Client: xxx.xxx.xxx.xxx, Server: mein_Servername , Anfrage: "GET/HTTP/1.1 $" oder der Browser sagt direkt, dass keine sichere Verbindung hergestellt werden kann und weigert sich, eine Verbindung herzustellen. –

+1

Sieht so aus, als ob es nicht möglich ist. Nginx macht keinen Forward Proxy. [https und nginx als Forward Proxy] (https://forum.nginx.org/read.php?2,15124,15256#msg-15256). – wolfhammer