nginx: перенаправление на контейнеры Docker с включенным https

nginx: перенаправление на контейнеры Docker с включенным https

У меня есть два контейнера, запущенных в экземпляре 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 перенаправляет запрос, а не проксирует его.

Связанный контент