Wie verwende ich Nginx + Proxy_Pass für einen Docker-Container mit SSL?

Wie verwende ich Nginx + Proxy_Pass für einen Docker-Container mit SSL?

Ich möchte mehrere Websites auf meinem Server bereitstellen. Jede Website soll als Docker-Compose-Build verpackt werden, jede hat ihren eigenen Nginx, der auf einem einzigen Port lauscht.

Ich habe eine Site mit dem Hostnamen site1.com. Ihr Docker Compose stellt Port 81 bereit:

...
services:
  web:
    image: nginx
    ...
    ports:
      - '81:443'
    ...
...

Und der Client nginx (im Container) hört alles auf 443 und hat alle SSL-Einstellungen

server {
        listen 443 ssl;

        ssl_certificate /etc/letsencrypt/fullchain1.pem;
        ssl_certificate_key /etc/letsencrypt/privkey1.pem;
    
        # ...
        # and everything else
}

Und hier ist der Host nginx, der gemäß Servername gerade von Port 80 zu 81 wechselt:

server {
        listen 80;
        listen [::]:80;

        server_name site1.com;

        location / {
                proxy_pass https://localhost:81;
        }
}

Im Moment funktioniert es. Aber es ist unsicher. Also versuche ich, eine 443-Weiterleitung hinzuzufügen.

server {
        listen 443;
        listen [::]:443;
        server_name bederdinov.me;

        location / {
                proxy_pass https://localhost:81;
        }
}

Nginx startet gut neu, aber wenn ich gehe, https://site1.combekomme ich eineERR_SSL_PROTOCOL_ERROR

Es scheint ziemlich offensichtlich - Host nginx versucht, Anfragen mit SSL zu bedienen, aber nur Docker-Client nginx weiß, wie das geht

Wie kann ich dem Host-Nginx sagen, dass er nichts tun muss, sondern nur die ganze Arbeit an den Client-Nginx weiterleiten soll? Oder gibt es vielleicht eine andere Serversoftware, die ich für diese Aufgabe verwenden kann?

Antwort1

Die SSL-Terminierung wird von nginx außerhalb des Containers gehandhabt. Sie müssen die SSL-Optionen dort konfigurieren. Es ist nicht erforderlich, SSL innerhalb des Containers zu konfigurieren, solange dieser auf demselben Host wie der Reverse-Proxy ausgeführt wird.

verwandte Informationen