У меня 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 в качестве обратного прокси.