nginx: Weiterleitung zu Docker-Containern mit aktiviertem https

nginx: Weiterleitung zu Docker-Containern mit aktiviertem https

Ich habe zwei Container in einer EC2-Instanz laufen, der erste verwendet Port 4200 und der zweite 8188. Ich habe auch einen Domänennamen „my-domaine.com“, der mit meiner EC2-Instanz verbunden ist. Ich möchte diese Container über die Domäne und über eine sichere Verbindung erreichen, also habe ich die folgenden Schritte ausgeführt.

  • Fügen Sie jedem Container zwei verschiedene Domänen mit den Namen „app1.my-domaine.com“ und „app2.my-domaine.com“ hinzu (jede Domäne wird in einen anderen Container verschoben).
  • installiertes Lets Encrypt-Zertifikat
  • installierter Nginx-Server auf der EC2-Instanz
  • Ich habe die folgende Konfiguration hinzugefügt, um https zu aktivieren und die Anforderungen vom Domänennamen auf diese Weise an die Container weiterzuleiten.
server {
    listen 80;
    server_name my-domaine.com;
    return 301 https://$host$request_uri;
}

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  app1.my-domaine.com;
    port_in_redirect on;

    ssl_certificate "/etc/letsencrypt/live/my-domaine.com/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/my-domaine.com/privkey.pem";

    location / {
        proxy_pass http://127.0.0.1:4200;
    }

    # added this to redirect any path to the container as well
    location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:4200$1$2;
    }
}

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  app2.my-domaine.com;
    port_in_redirect on;

    ssl_certificate "/etc/letsencrypt/live/my-domaine.com/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/my-domaine.com/privkey.pem";

    location / {
        proxy_pass http://127.0.0.1:8188;
    }

    location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:8188$1$2;
    }
}

Das Problem, auf das ich stoße, ist eine Fehlermeldung beim Laden von Dateien wie JS-, CSS- oder JSON-Dateien, obwohl ich diesen Block eingefügt habe:

location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:8188$1$2;
}

Ich erhalte auch die standardmäßige 404-Fehlerseite von nginx, wenn ich einen Pfad zur Domäne hinzufüge, beispielsweise „app1.my-domaine.com/admin“. Haben Sie Vorschläge, wie sichergestellt werden kann, dass alle Anfragen, einschließlich aller Pfade oder Dateien, an die entsprechenden Container weitergeleitet werden?

AKTUALISIEREN Ich habe dies geändert

location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:8188$1$2;
}

dazu

location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:8188/$1$2;
}

Die CSS- und JS-Dateien werden korrekt geladen, aber es gibt noch ein Problem. Wenn ich zuhttps://app1.meine-domain.com/adminim Browser werde ich zu 127.0.0.1:4200/admin weitergeleitet. Das bedeutet, dass nginx die Anfrage umleitet, anstatt sie über einen Proxy zu senden.

verwandte Informationen