컨테이너 내 유닉스 소켓으로 Apache2를 리버스 프록시로 사용하는 테스트 환경에서 Apache2가 “문제없이” 작동하는 것을 확인했습니다:
발견한 유일한 차이점(참고: 테스트는 몇 시간밖에 하지 않았으며, 완전한 검증은 아닙니다)은 다음과 같습니다:
- 컨테이너의 공유 볼륨에 있는 유닉스 소켓으로의 심볼릭 링크를 사용할 경우 Apache2가 작동하지 않습니다;
- 대략적인 테스트에서 Apache2가 약간 느렸지만, 그 정도는 크지 않았습니다.
개인적으로 기술에 대한 종교 전쟁 같은 것을 좋아하지 않습니다. 따라서 "Apache2를 사용하면 많은 문제가 발생할 것이다"라는 주장에는 동의하지 않습니다. 제 테스트 과정에서 Apache2로 인해 부정적인 문제를 경험한 적은 없습니다.
Apache2(참고: LETSENCRYPT와 함께 HTTP로 잘 작동했습니다)에 사용했던 핵심 설정은 다음과 같습니다:
# 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>
참고: force_https가 설정되어 있음에도 HTTP로 서빙되는 문제를 경험한 유일한 경우는 /uploads 디렉토리에 파일이 누락되었을 때였으며, 이는 (물론) Apache2와 nginx를 리버스 프록시로 사용하는 것과는 무관합니다.