Настройка 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