Обсуждение обратного прокси и HTTPS

У меня Apache2 заработал «без проблем» в тестовой среде: Apache2 выступает в роли обратного прокси к unix-сокету внутри контейнера.

Единственное различие, которое я обнаружил (примечание: тестирование длилось всего несколько часов, это не полное исследование), заключалось в следующем:

  • Apache2 не работает с символической ссылкой на unix-сокет в общем томе внутри контейнера;
  • Apache2 был немного медленнее в грубом тесте, но незначительно.

Лично я не сторонник религиозных войн вокруг технологий; поэтому я не согласен с утверждением, что «Apache2 создаст вам много проблем». Во время моих тестов я не столкнулся с какими-либо негативными проблемами с Apache2.

Ниже приведена основная конфигурация, которую я использовал с Apache2 (HTTP, кстати, отлично работает с LETSENCRYPT):

# 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>

Примечание: Единственный раз, когда мы сталкивались с проблемой выдачи HTTP-контента даже при включённом force_https, это было связано с отсутствием файлов в директории /uploads, но это (разумеется) не связано с выбором между Apache2 и nginx в качестве обратного прокси.