У меня есть 2 контейнера докеров под управлением nginx. Первый контейнер действует как обратный прокси-сервер, который направляет трафик во второй контейнер. Во втором контейнере находятся файлы веб-сайта. У прокси-контейнера есть порты 80 и 443, открытые для публики.
В случае HTTPS я намерен сделать так, чтобы прокси-контейнер направлял трафик и позволял nginx на реальном контейнере веб-сайта обрабатывать SSL.
Благодаря этому, я надеюсь, что смогу упростить и упростить обслуживание файла конфигурации nginx в прокси-контейнере, поскольку все конфигурации SSL устанавливаются и обрабатываются nginx в контейнерах соответствующего веб-сайта.
Вот конфигурационный файл прокси-контейнера nginx:
upstream mywebsite {
server website-container;
}
server {
listen 80 default deferred;
listen 443 deferred;
server_name mywebsite.com www.mywebsite.com;
location / {
proxy_pass $scheme://mywebsite;
}
}
... other server blocks for other domains ...
А вот и конфигурационный файл контейнера nginx website-container
к которому прокси-контейнер будет «передавать прокси»:
server
{
listen 80;
server_name mywebsite.com;
return 301 https://www.mywebsite.com$request_uri;
}
server
{
listen 443;
listen [::]:443 ssl http2;
server_name mywebsite.com;
ssl_certificate /var/www/html/cert.pem;
ssl_certificate_key /var/www/html/key.pem;
root /var/www/html;
}
Однако когда я захожу на сайт через HTTPS, я всегда получаю сообщение об отказе в соединении.
Я попытался удалить перенаправление на HTTPS, и похоже, что сайт HTTP работает. Таким образом, ошибка должна быть связана с HTTPS или портом 443.
Что-то не так с моим файлом конфигурации? Как я могу получить прокси-контейнер для передачи трафика HTTPS на nginx в контейнере веб-сайта, website-container
?