Subversion supports DAV protocol access only with Apache server. To get it running with nginx, apache has to be installed on the same system.
To start, install apache and svn support
apt-get install apache2 libapache2-svn
For apache and nginx web servers to coexist on the same computer and running at the same time, they would have to listen on the different ports. Standard ssl port is 443, lets set apache ssl to 8443. To prevent ports exposed to Internet, set apache to listen on port 8443 only localy.
Configure apache ports in /etc/apache2/ports.conf to be
Listen 127.0.0.1:8443
Activate SSL and the DAV modules on Apache
$ a2enmod ssl
$ a2enmod dav
$ a2enmod dav_svn
Restart apache
service apache2 restart
add DAV stuff
nano -w /etc/apache2/mods-available/dav_svn.conf
LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so # Example configuration:DAV svn SVNPath /var/svn/my_repos SVNListParentPath on AuthType Basic AuthName "Subversion repository" AuthUserFile /var/svn/conf/svnusers.conf Require valid-user SSLRequireSSL }}}
Link default ssl configuration
cd /etc/apache2/sites-enabled
cp ../sites-available/default-ssl.conf svn-ssl.conf
nano -w svn-ssl.conf
And also set Listen 127.0.0.1:8443 in svn-ssl.conf
Create password files
htpasswd -cm /var/svn/conf/svnusers.conf user1
htpasswd -m /var/svn/conf/svnusers.conf user2
Check permissions. Debian apache should use www-data user and group. You can double check it in /etc/apache2/apache2.conf and /etc/apache2/envvars files, or just by doing ps aux | grep apache
.
Make sure the same user/group are owners of the repository.
chown -R www-data:www-data /var/svn/
Restart apache and check if it works, for example with links
links https://127.0.0.1:8443/svn/my_repos
Create nginx conf file, or add proxy pass in existing config
server { listen 80; server_name svn.myserver.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name svn.myserver.com; ssl on; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; access_log /var/log/nginx/svn.access.log; error_log /var/log/nginx/svn.error.log; location / { proxy_pass https://127.0.0.1:8443; } }
Restart nginx and check in your web browser.