Обратное проксирование нескольких различных подключаемых по протоколу HTTPS сервисов
У меня есть два сервиса, оба аккуратно докернизированы, каждый со своим docker-compose.yml
,
Каждый сервис имеет свое доменное имя.
Обе службы используют HTTPS и имеют сертификаты Lets Encrypt.
Оба сервиса полностью автономны и слушают на 80 и 443.
.--[http]-[https]--. .--[http]-[https]--.
| | | |
| Service A | | Service B |
| | | |
'------------------' '------------------'
Как настроить обратный прокси-сервер, чтобы я мог запускать обе службы на одном хосте?
.--------------[http]-[https]--------------.
| |
| REVERSE PROXY |
| |
'---+--------+---------------+--------+----'
| | | |
http https http https
req. req. req. req.
domainA domainA domainB domainB
| | | |
V V V V
.--[http]-[https]--. .--[http]-[https]--.
| | | |
| Service A | | Service B |
| | | |
'------------------' '------------------'
Я хотел бы, чтобы услуги были автономными. Т.е. я хотел бы избежать извлечения сертификатов из сервисных контейнеров.
Из моих экспериментов кажется, что nginx не может пересылать HTTPS-запросы без сертификатов, хотя кажется, что этого можно добиться. Возможно с другим программным обеспечением обратного прокси?
У меня есть контроль над обеими службами docker-compose.yml
, Я могу изменить порты и так далее, если это необходимо.
В идеале я хотел бы найти простого демона, который принимает конфигурацию, которая выглядит примерно так:
[service a]
domain: domainA.tld
localPort: 8080
[service b]
domain: domainB.tld
localPort: 8081
Я искал как сумасшедший, но не нашел такого инструмента.
1 ответ
Вы можете использовать jwilder / nginx-proxy, который предлагает автоматизировать функцию обратного прокси и поставляется с простой интеграцией docker-compose (вам нужно только указать пару переменных среды: порты, на которых работает служба, и домен, в котором услуга будет доступна).
Вы также можете автоматизировать создание сертификата Let's Encrypt с помощью https://hub.docker.com/r/jrcs/letsencrypt-nginx-proxy-companion/.