Logré que Apache2 funcionara “sin problemas” en un entorno de prueba con Apache2 actuando como proxy inverso hacia un socket Unix en el contenedor:
La única diferencia que encontré (nota: solo unas pocas horas de pruebas, nada exhaustivo) fue:
- Apache2 no funcionará con un enlace simbólico al socket Unix en el volumen compartido dentro del contenedor;
- Apache2 fue un poco más lento en una prueba aproximada, pero no por mucho.
Personalmente, no soy fanático de las guerras religiosas sobre tecnologías; por lo tanto, discrepo con la afirmación de que “Apache2 te dará muchos problemas”. No experimenté ningún problema negativo con Apache2 durante mis pruebas.
Aquí está la configuración central que utilicé con Apache2 (HTTP, funcionó perfectamente con LETSENCRYPT, por cierto):
# 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: La única vez que experimentamos problemas con la entrega de HTTP incluso cuando force_https estaba configurado fue cuando faltaban archivos en el directorio /uploads, pero esto (por supuesto) no está relacionado con Apache2 frente a nginx como proxy inverso.