У меня есть публичный сервер Apache, который должен прокси-сервер к внутреннему серверу Apache (для доступа к SVN). То, что я хотел бы иметь:
User ---[HTTPS]---> Web Server ---[HTTP]---> SVN Server
Я не слишком знаком с обработкой SSL, поэтому я хотел бы высказать некоторые мнения по этому подходу. Это хорошая модель; я должен использовать SSL везде и т. д.
Мой подход работает по большей части, но терпит неудачу при переписывании перенаправлений обратно в HTTPS. Если пользователь переходит на
https://acme.web.mcx/svn (no trailing '/')
они перенаправляются сервером SVN на
http://acme.web.mcx/svn/ (almost there!)
Вот мой конфиг для веб-сервера (прокси-сервера):
<VirtualHost *:443>
ServerAdmin me@admin.com
ServerAlias *.web.mcx www.web.mcx web.mcx
DocumentRoot /server/web/app/webroot
ErrorLog logs/web-error_log
CustomLog logs/web-access_log common
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.web\.mcx$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.web\.mcx$ [NC]
RewriteRule ^/svn(.*) http://db.mcx/svn$1 [P]
ProxyPassReverse /svn http://db.mcx/svn
ProxyPreserveHost on
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyVia On
<Location /svn/>
<Limit OPTIONS PROPFIND GET REPORT MKACTIVITY PROPPATCH PUT CHECKOUT MKCOL MOVE COPY DELETE LOCK UNLOCK MERGE>
Order Deny,Allow
Allow from all
Satisfy Any
</Limit>
</Location>