
У меня есть два контейнера, запущенных в экземпляре EC2, первый использует порт 4200, а второй — 8188. У меня также есть доменное имя «my-domaine.com», подключенное к моему экземпляру EC2. Я хочу получить доступ к этим контейнерам через домен и через защищенное соединение, поэтому я предпринял следующие шаги.
- Добавьте два разных домена в каждый контейнер с именами «app1.my-domaine.com» и «app2.my-domaine.com» (каждый домен будет помещен в отдельный контейнер)
- установлен позволяет шифровать сертификат
- установленный сервер nginx на экземпляре EC2
- Я добавил следующую конфигурацию, чтобы включить https и перенаправлять запросы с доменного имени в контейнеры следующим образом.
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;
}
}
Проблема, с которой я столкнулся, заключается в сообщении об ошибке при загрузке таких файлов, как .js, .css или .json, несмотря на то, что я включил этот блок:
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
Я также получаю страницу ошибки 404 по умолчанию от nginx, когда добавляю путь к домену, например, "app1.my-domaine.com/admin". Есть ли у вас предложения, как гарантировать, что все запросы, включая любой путь или файл, направляются в соответствующие контейнеры?
ОБНОВЛЯТЬ У меня есть изменения в этом
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
к этому
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188/$1$2;
}
Файлы CSS и JS загружены правильно, но есть еще одна проблема. Когда я иду вhttps://app1.my-domain.com/adminв браузере он перенаправляет меня на 127.0.0.1:4200/admin. Это означает, что nginx перенаправляет запрос, а не проксирует его.