Discussione su reverse proxy e HTTPS

Ho fatto funzionare Apache2 “senza problemi” in un ambiente di test, configurandolo come reverse proxy verso una socket Unix nel contenitore:

L’unica differenza che ho riscontrato (nota: solo alcune ore di test, nulla di completo) è stata:

  • Apache2 non funziona con un collegamento simbolico alla socket Unix nel volume condiviso del contenitore;
  • Apache2 è stato leggermente più lento in un test approssimativo, ma non di molto.

Personalmente, non sono un fan delle guerre religiose sulle tecnologie; quindi non condivido l’affermazione che “Apache2 ti darà molti problemi”. Non ho riscontrato alcun problema negativo con Apache2 durante i miei test.

Ecco la configurazione di base che ho utilizzato con Apache2 (HTTP, funzionava perfettamente anche con LETSENCRYPT, a proposito):

# 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: l’unica volta in cui abbiamo riscontrato problemi con la consegna di contenuti HTTP anche quando force_https era impostato è stata quando mancavano file nella directory /uploads, ma questo (ovviamente) non è correlato a Apache2 rispetto a nginx come reverse proxy.