Estou tentando configurar o Discourse em um container Docker. O ambiente host (Debian) está executando um servidor Apache httpd (não posso executar o nginx porque estou hospedando outros sites no Apache). Quero usar o mod_proxy para fazer o reverse-proxy para o container, que está escutando na porta 3000.
A configuração atual do Apache para este vhost é a seguinte:
Comecei apenas com as diretivas ProxyPass e ProxyPassReverse e adicionei ProxyPreserveHost e as diretivas RequestHeader uma de cada vez. Não importa como configure o proxy usando essas diretivas, certos arquivos abaixo da raiz do documento retornam 404 ao serem acessados (por exemplo, itens em /images e /assets).
Observe o comentário contendo a URL do Discourse Meta que converti da sintaxe nginx para Apache.
Qualquer ideia sobre como fazer isso funcionar seria muito apreciada!
Fiz uma pesquisa um pouco mais aprofundada sobre isso e acredito que consigo realizar o que procuro, pois parece que o HAProxy pode escolher backends com base no vhost.
O HAProxy faz exatamente o que eu preciso e parece ser uma ferramenta muito polida e útil. Obrigado pela indicação.
No entanto, parece que a edição dos templates/web*.yml para ouvir em portas diferentes das padrão 80 e 443 foi onde surgiu o problema. Restabeleci as configurações padrão e depois editei o containser/app.yml para incluir linhas semelhantes às seguintes, e os erros 404 desapareceram:
Tenho estado muito satisfeito com o Traefik ultimamente, e ele emite certificados do Let’s Encrypt automaticamente (você também pode fazer isso com o HA-Proxy, mas exige um pouco mais de trabalho).