Eu tenho dois serviços, ambos bem encaixados, cada um com seu próprio arquivo docker-compose.yml
.
Cada serviço tem seu próprio nome de domínio.
Ambos os serviços usam HTTPS e possuem certificados Lets Encrypt.
Ambos os serviços são totalmente independentes e escutam em 80 e 443.
.--[http]-[https]--. .--[http]-[https]--.
| | | |
| Service A | | Service B |
| | | |
'------------------' '------------------'
Como configuro um proxy reverso para poder iniciar os dois serviços no mesmo host?
.--------------[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 |
| | | |
'------------------' '------------------'
Eu gostaria de manter os serviços independentes. Ou seja, eu gostaria de evitar a extração dos certificados dos contêineres de serviço.
Pelas minhas experiências, parece que o nginx não pode encaminhar solicitações HTTPS sem os certificados, emboraparececomo deveria ser possível conseguir isso. Talvez com algum outro software de proxy reverso?
Eu tenho controle sobre ambos os serviços docker-compose.yml
. Posso mudar de porta e assim por diante, se necessário.
Idealmente, eu gostaria de encontrar um daemon simples que aceitasse uma configuração parecida com
[service a]
domain: domainA.tld
localPort: 8080
[service b]
domain: domainB.tld
localPort: 8081
Eu procurei como um louco, mas não encontrei nenhuma ferramenta desse tipo.
Responder1
Você poderia usar ojwilder/nginx-proxy, que oferece funcionalidade automatizada de proxy reverso e vem com uma integração fácil do docker-compose (você só precisa especificar algumas variáveis de ambiente: as portas onde o serviço está sendo executado e o domínio onde o serviço estará disponível).
Você também pode automatizar a geração do certificado Let's Encrypt comjrcs/letsencrypt-nginx-proxy-companion.