
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.