
Tengo dos contenedores ejecutándose en una instancia EC2, el primero usa el puerto 4200 y el segundo 8188. También tengo un nombre de dominio "mi-dominio.com" conectado a mi instancia EC2. Mi objetivo es llegar a estos contenedores a través del dominio y mediante una conexión segura, así que seguí los siguientes pasos.
- Agregue dos dominios diferentes a cada contenedor llamados "app1.mi-dominio.com" y "app2.mi-dominio.com" (cada dominio se llevará a un contenedor diferente)
- instalado permite cifrar el certificado
- servidor nginx instalado en la instancia EC2
- Agregué la siguiente configuración para habilitar https y reenviar las solicitudes del nombre de dominio a los contenedores como este.
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;
}
}
El problema que encuentro es un mensaje de error al cargar archivos como.js,.css o.json, a pesar de que he incluido este bloque:
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
También recibo la página de error 404 predeterminada de nginx cuando agrego una ruta al dominio, como "app1.my-domaine.com/admin", por ejemplo. ¿Tiene alguna sugerencia sobre cómo garantizar que todas las solicitudes, incluida cualquier ruta o archivo, se enrute a los contenedores adecuados?
ACTUALIZAR tengo cambios esto
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
a esto
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188/$1$2;
}
Los archivos CSS y JS se cargan correctamente, pero todavía hay un problema. Cuando voy ahttps://app1.mi-dominio.com/adminen el navegador, me redirige a 127.0.0.1:4200/admin. Esto significa que nginx está redirigiendo la solicitud en lugar de enviarla como proxy.