Consegui fazer o Apache2 funcionar “sem problemas” em um ambiente de teste com o Apache2 atuando como proxy reverso para um socket Unix no container:
A única diferença que encontrei (nota: apenas algumas horas de teste, nada completo) foi:
- O Apache2 não funciona com um link simbólico para o socket Unix no volume compartilhado no container;
- O Apache2 foi um pouco mais lento em um teste aproximado, mas não muito.
Pessoalmente, não sou fã de guerras religiosas sobre tecnologias; portanto, discordo que “o Apache2 trará muitos problemas”. Não experimentei nenhum problema negativo com o Apache2 durante meus testes.
Aqui está a configuração principal que usei com o Apache2 (HTTP, funcionou bem com o LETSENCRYPT, aliás):
# cat discourse.example.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName discourse.example.com
DocumentRoot /website/discourse
RewriteEngine On
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / unix:/var/discourse/shared/socket-only/nginx.http.sock|http://localhost/
ProxyPassReverse / unix:/var/discourse/shared/socket-only/nginx.http.sock|http://localhost/
ErrorLog /var/log/apache2/discourse.error.log
LogLevel warn
CustomLog /var/log/apache2/discourse.access.log combined
RewriteCond %{SERVER_NAME} =discourse.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Nota: A única vez em que experimentamos problemas com o HTTP sendo servido, mesmo com force_https definido, foi quando havia arquivos faltando no diretório /uploads, mas isso (obviamente) não está relacionado ao Apache2 versus nginx como proxy reverso.