Главная страница \ Статьи \ Разное \ Пример настройки WebDAV (FreeBSD: apache mod_dav)

Пример настройки WebDAV (FreeBSD: apache+mod_dav)

Недавно появилась необходимость настроить общую папку WebDAV. Почему именно эта технология, а не тот же FTP или SFTP? Во-первых, они уже настроены, во-вторых, протокол HTTPS доступен практически всюду, из разных стран и от разных провайдеров. Плюс есть возможность скачивать файлы по обычному HTTPS, что очень удобно для создания обменника.

Исходная конфигурация:

Создаём дерево каталогов:

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>

Вопросы? Предложения?

Powered by Elise