Возникла тут необходимость поднять Subversion как WebDAV на Apache httpd, но вот ведь незадача: пихать апач голой попой в интернет — не самая разумная идея, причём 80-ый порт всё равно уже занят nginx, а хочется красиво вынести это дело в поддомен.
В итоге, было наброшено следующее решение, в /etc/httpd/conf.d/subversion.conf:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<VirtualHost 127.0.0.1:11078>
DocumentRoot /var/www/svn
<Location />
DAV svn
Satisfy Any
SVNParentPath /var/www/svn
SVNListParentPath on
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>
</VirtualHost>
При этом в /etc/nginx/conf.d/upstream-scm.conf:
upstream svn {
server 127.0.0.1:11078 max_fails=3 fail_timeout=30s;
}
server {
server_name svn.mydomain.tld;
listen 80;
charset utf-8;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 700;
proxy_send_timeout 700;
proxy_connect_timeout 700;
location / {
proxy_pass http://svn;
}
}
При входе браузером по адресу svn.mydomain.tld всё хорошо и радужно, однако если попробовать выполнить чекаут, сталкиваемся с проблемой:
eveel@notazik{~}% svn co http://svn.mydomain.tld/one-nice-project/
svn: Repository moved permanently to 'http://svn.mydomain.tld:11078/one-nice-project/'; please relocate
Это меня достаточно сильно угнетает, и порождает резонный вопрос: что же делать и как запретить ему переписывать порт?