Пример настройки WebDAV (FreeBSD: apache+mod_dav)
Недавно появилась необходимость настроить общую папку WebDAV. Почему именно эта технология, а не тот же FTP или SFTP? Во-первых, они уже настроены, во-вторых, протокол HTTPS доступен практически всюду, из разных стран и от разных провайдеров. Плюс есть возможность скачивать файлы по обычному HTTPS, что очень удобно для создания обменника.
Исходная конфигурация:
- FreeBSD
- Apache 2.4
Создаём дерево каталогов:
mkdir /home/webdav/data chown www:www -R /home/webdav chmod 0770 -R /home/webdav
Создаём файл с паролями и нового пользователя:
htdigest -c /home/webdav/.passwd MyWebDAV user
Утилита предложит ввести пароль и подтверждение пароля.
Я сразу делал HTTPS-версию доступа к хранилищу, поэтому воспользовался сервисом LetsEncrypt для получения валидного сертификата:
certbot certonly --standalone -d webdav.example.com
Процесс установки certbot описывал ранее.
Затем правим файл httpd.conf (/usr/local/etc/apache24/httpd.conf), раскомментируем следующие модули:
LoadModule auth_digest_module libexec/apache24/mod_auth_digest.so LoadModule dav_module libexec/apache24/mod_dav.so LoadModule dav_fs_module libexec/apache24/mod_dav_fs.so LoadModule dav_lock_module libexec/apache24/mod_dav_lock.so LoadModule rewrite libexec/apache24/mod_rewrite.so
Вот пример собранного виртуального хоста с переадресацией с HTTP-версии:
<VirtualHost *:80> # AssignUserID www www ServerAdmin your@mail DocumentRoot "/home/webdav" ServerName webdav.example.com KeepAlive Off RewriteEngine On RewriteRule ^/(.*)$ https://webdav.example.com/$1 [R=301,L] </VirtualHost> <VirtualHost *:443> # AssignUserID www www ServerAdmin your@mail DocumentRoot "/home/webdav/data" ServerName webdav.example.com ErrorLog "/home/webdav/error-webdav.log" CustomLog "/home/webdav/access-webdav.log" combined SSLEngine on SSLCertificateFile /usr/local/etc/letsencrypt/live/webdav.example.com/cert.pem SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/webdav.example.com/privkey.pem SSLCertificateChainFile /usr/local/etc/letsencrypt/live/webdav.example.com/chain.pem <Directory /home/webdav/data> Options Indexes MultiViews Require all granted </Directory> DAVLockDB /home/webdav/DAVLock <Location /> DAV On AuthType Digest AuthName MyWebDAV AuthDigestProvider file AuthUserFile /home/webdav/.passwd Require valid-user </Location> </VirtualHost>