Настройка сервера DAV (WebDAV)

Комментариев нет

Как-то мне понадобилось обеспечить доступ к файловым хранилищам расположенным на разных физических серверах через единую точку входа.


Изначально был выбран FTP для предоставления доступа, однако единую точку входа организовать не получилось. Данный протокол совершенно не заточен для требуемой схемы (не спасает даже proftpd с виртуалхостами - разделение происходит по пользователям, много танцев с бубном и другие сложности)

Поэтому я остановил свой выбор на связке Apache DAV/2 + NGINX в качестве реверсного прокси сервера (тем более, что он уже был и проксировал доступ к другим серверам)

Итак, в упрощенном виде схема сети выглядит следующим образом:




На стороне файлового сервера выполняем следующие действия:

Должны быть установлены следующие пакеты:
apache2-mods, apache2-base, apache2-httpd-itk, apache2-icons
Список пакетов приведен для дистрибутива ALT Linux, для других дистрибутивов и ОС, в том числе и MS Windows он может (да и будет) отличаться.

У меня для Апача, через a2enmod были включены следующие модули:
1cws alias auth_basic auth_digest authn_file authz_default authz_host authz_user autoindex dav dav_fs dir include log_config logio mime negotiation rewrite

Так как н сервере используется ITK модуль для Apache (на сервере все приложения бегают под собственными пользователя, а не в рамках одно процесса www-data), необходимы небольшие приготовления (все команды выполняются от пользователя root, username - имя пользователя под которым работает DAV сервер):

Добавим пользователя
#adduser username
Создадим файл для локов
#su - username -c "touch /home/username/.davlock"
Созадим пользователя для доступа через WebDAV
#su - username -c "htdigest2 -c /home/username/.digestdav example.com secretuser"

После данных приготовлений причесываем конфиг виртуалхоста для данного приложения

<VirtualHost *>

    #Будет показан на страницах с ошибками по умолчанию
        ServerAdmin [email protected]

    #FQDN имя виртуалхоста
        #ServerName www.example.com:80

    #Путь который будет считаться корнем сайта (там в index.html можно разместить инструкцию для подключения)
        DocumentRoot "/home/username/www/html"


      #Запускам процесс http под пользователем и группой username
        <IfModule mpm_itk_module>
            AssignUserId username username
        </IfModule>

      #Привяжем алиас для удобного доступа к серверу DAV
        Alias /files /home/username/filestorage

       #Путь для базы с локами (файлы которые открыты/качаются в данный момент)
        DavLockDB /home/username/.davlock

       #Запрещаем доступ к файлам начинающимся с .ht случаи разные бывали, шутников нужно рубить на корню
        <Files ~ "^\.ht">
            Order allow,deny
            Deny from all
        </Files>

       #Собственно путь к файлахранилищу
        <Directory /home/username/filestorage/>
            Options Indexes MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
         </Directory>

       #Правила для локации
        <Location /files>
           #Включаем DAV модуль
            DAV On
           #Используем дайджест авторизацию, можно и базовой аутентификацией, но будут в Windows нужны будут правки реестра
            AuthType Digest
            AuthName "example.com"
            AuthUserFile "/home/username/.digestdav"
            #Собственно, пускать только прошедших аутентификацию
            Require valid-user
            #Выключение реврайта
            RewriteEngine off
        </Location>

        ErrorLog /var/log/httpd2/error_log
        LogLevel warn

        <IfModule log_config_module>
                CustomLog /var/log/httpd2/access_log common
                #CustomLog /var/log/httpd2/access_log combined
        </IfModule>
</VirtualHost>

На этом настройка сервера DAV завершена. Осталось только проверить конфигурацию на ошибки:
service httpd2 configtest

И если все ок, то стартуем:
service httpd2 start

Настройки подключения клиента с OS Windows можно посмотреть тут.

Настройка NGINX для балансировки и реверсного проксирования, выходит за рамки заметки и будет (возможно) описана позже.



Комментариев нет :

Отправить комментарий