
Tenho dois contêineres em execução em uma instância do EC2, o primeiro usa a porta 4200 e o segundo 8188. Também tenho um nome de domínio "my-domaine.com" conectado à minha instância do EC2. Meu objetivo é acessar esses contêineres por meio do domínio e de uma conexão segura, então executei as etapas a seguir.
- Adicione dois domínios diferentes a cada contêiner chamados "app1.my-domaine.com" e "app2.my-domaine.com" (cada domínio será levado para um contêiner diferente)
- instalado permite criptografar o certificado
- servidor nginx instalado na instância EC2
- Adicionei a seguinte configuração para habilitar https e encaminhar as solicitações do nome de domínio para os contêineres 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;
}
}
O problema que estou encontrando é uma mensagem de erro ao carregar arquivos como.js,.css ou.json, apesar de ter incluído este bloco:
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
Também estou recebendo a página de erro 404 padrão do nginx quando adiciono um caminho ao domínio, como "app1.my-domaine.com/admin", por exemplo. Você tem alguma sugestão sobre como garantir que todas as solicitações, incluindo qualquer caminho ou arquivo, sejam roteadas para os contêineres apropriados?
ATUALIZAR Eu tenho mudanças nisso
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
para isso
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188/$1$2;
}
Os arquivos CSS e JS foram carregados corretamente, mas ainda há um problema. Quando eu for parahttps://app1.meu-domínio.com/adminno navegador, ele me redireciona para 127.0.0.1:4200/admin. Isso significa que o nginx está redirecionando a solicitação em vez de fazer proxy dela.