Настройка Web Dav в nginx

Настройка Web Dav в nginx

Очень удобно иметь скриншоты на своем домене. Я использую Monosnap в качестве скриншотера, в дополнение к настройке web dav в windows теперь все хранится в Ubuntu.

Очевидно, что ftp уже изжил себя в качестве протокола для сохранени и отдачи скриншотов. Оказалось, что настроить webdav в nginx можно из коробки. Для этого привязываем домен (в моем случае это поддомен основного домена).

Создаем каталог для будущего сервера

mkdir /var/www/images.oxozle.com

Фиксим права:

chown -R www-data:www-data /var/www/images.oxozle.com

Следующим шагом создаем конфиг для nginx. Я не делал 80 порт. SSL использовал от Letsencrypt.

server {
    listen 443 ssl;
    server_name images.oxozle.com;

    # Если необходимо - защищаем по ssl
    ssl_certificate /etc/letsencrypt/live/.../fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/.../privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/.../fullchain.pem;
    include /etc/nginx/snippets/ssl.conf;
    location /webdav {
        client_max_body_size 1g;
        # Сюда будут загружаться файлы
        root /var/www/images.oxozle.com;
        # Разрешаем чтение и удаление
        dav_access user:rw group:rw all:rw;
        # Все методы для удобства работы (с возможностью удаления)
        dav_methods PUT DELETE MKCOL COPY MOVE;
        # Требуется для некоторых webdav клиентов (Cyberduck и Monosnap)
        dav_ext_methods   PROPFIND OPTIONS;
        # Чтобы клиенты могли создавать пусть сами
        create_full_put_path on;
        charset utf-8;
        # Возможность просмотра каталога
        autoindex on;
        # Включаем авторизоацию для загрузки файлов
        auth_basic "Upload directory";
        auth_basic_user_file /etc/nginx/htpasswd;
    }

    # А тут описывается отдача файлов, причем root указана директория куда мы заливаем файлы
    location / {
        root /var/www/images.oxozle.com/webdav;
    }
}

Включаем сайт

ln -s /etc/nginx/sites-available/images.oxozle.com /etc/nginx/sites-enabled/images.oxozle.com

Создаем файл с паролем для авторизации

touch /etc/nginx/htpasswd
sudo chmod 644 /etc/nginx/htpasswd

Утилитой htpasswd генерируем пароль и вставляем его в файл /etc/nginx/htpasswd

Comments

comments powered by Disqus