Discursos por trás de proxy reverso e https

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.