Рейтинг:0

Как использовать nginx + proxy_pass для контейнера докеров с ssl?

флаг de

Я хочу обслуживать несколько сайтов на своем сервере. Каждый сайт, который я полагаю обернуть как сборку docker-compose, у каждого есть свой собственный nginx, который слушает один единственный порт.

У меня есть сайт с именем узла site1.com. Это docker compose выставляет порт 81:

...
Сервисы:
  веб:
    изображение: nginx
    ...
    порты:
      - '81:443'
    ...
...

А клиент nginx (внутри контейнера) все слушает на 443 и имеет все настройки ssl

сервер {
        слушать 443 ssl;

        ssl_certificate /etc/letsencrypt/fullchain1.pem;
        ssl_certificate_key /etc/letsencrypt/privkey1.pem;
    
        # ...
        # и все остальное
}

А вот хост nginx, который просто переходит с 80 порта на 81 по server_name:

сервер {
        слушать 80;
        слушать [::]:80;

        имя_сервера site1.com;

        место расположения / {
                прокси_пароль https://localhost:81;
        }
}

На данный момент это работает. Но это небезопасно. Поэтому я пытаюсь добавить 443 переадресацию.

сервер {
        слушать 443;
        слушать [::]:443;
        имя_сервера bederdinov.me;

        место расположения / {
                прокси_пароль https://localhost:81;
        }
}

Nginx хорошо перезагружается, но когда я захожу в https://site1.com я получаю ERR_SSL_PROTOCOL_ERROR

Кажется вполне очевидным — хост nginx пытается обслужить запрос по ssl, но только докер-клиент nginx знает, как это сделать

Как я могу сказать хосту nginx, что ему ничего не нужно делать, а только передать всю работу клиенту nginx? Или, может быть, есть другое серверное программное обеспечение, которое я могу использовать для этой задачи?

Рейтинг:0
флаг in

Завершение SSL обрабатывается nginx вне контейнера. Вам нужно настроить там параметры SSL. Нет необходимости настраивать SSL внутри контейнера, если он работает на том же хосте, что и обратный прокси-сервер.

флаг de
Единственная причина — хранить конфигурацию ssl в репозитории моего проекта, а не создавать ее заново каждый раз, когда я перемещаю свой проект на другой сервер. Но может я и преувеличиваю)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.