91 lines
2.2 KiB
Plaintext
91 lines
2.2 KiB
Plaintext
server {
|
|
server_name media.maksim-pankov.ru;
|
|
set $webdav_root "/mnt/Teka1/media_data";
|
|
|
|
location / {
|
|
root $webdav_root;
|
|
error_page 599 = @propfind_handler;
|
|
error_page 598 = @delete_handler;
|
|
|
|
chunked_transfer_encoding on;
|
|
open_file_cache off;
|
|
client_max_body_size 5g;
|
|
add_header Allow 'OPTIONS, GET, HEAD, PROPFIND';
|
|
|
|
if ($request_method = PROPFIND) {
|
|
return 599;
|
|
}
|
|
|
|
if ($request_method = PROPPATCH) { # Unsupported, allways return OK.
|
|
add_header Content-Type 'text/xml';
|
|
return 207 '<?xml version="1.0"?><a:multistatus xmlns:a="DAV:"><a:response><a:propstat><a:status>HTTP/1.1 200 OK</a:status></a:propstat></a:response></a:multistatus>';
|
|
}
|
|
|
|
if ($request_method = MKCOL) { # Microsoft specific handle: add trailing slash.
|
|
rewrite ^(.*[^/])$ $1/;
|
|
}
|
|
|
|
# if ($request_method = DELETE) {
|
|
# return 598;
|
|
# }
|
|
|
|
if ($request_method = OPTIONS) {
|
|
add_header Allow 'OPTIONS, GET, HEAD, PROPFIND, PROPPATCH, LOCK, UNLOCK';
|
|
add_header DAV '1, 2';
|
|
return 200;
|
|
}
|
|
|
|
dav_ext_methods OPTIONS;
|
|
|
|
create_full_put_path on;
|
|
dav_access user:r group:r all:r;
|
|
autoindex on;
|
|
charset utf-8;
|
|
|
|
auth_basic "Media Server";
|
|
auth_basic_user_file /etc/nginx/htpasswd;
|
|
}
|
|
|
|
location @propfind_handler {
|
|
internal;
|
|
|
|
open_file_cache off;
|
|
if (!-e $webdav_root/$uri) { # Microsoft specific handle.
|
|
return 404;
|
|
}
|
|
root $webdav_root;
|
|
dav_ext_methods PROPFIND;
|
|
}
|
|
|
|
location @delete_handler {
|
|
internal;
|
|
|
|
open_file_cache off;
|
|
if (-d $webdav_root/$uri) { # Add trailing slash to dirs.
|
|
rewrite ^(.*[^/])$ $1/;
|
|
}
|
|
root $webdav_root;
|
|
dav_methods DELETE;
|
|
}
|
|
|
|
|
|
listen 443 ssl; # managed by Certbot
|
|
ssl_certificate /etc/letsencrypt/live/media.maksim-pankov.ru/fullchain.pem; # managed by Certbot
|
|
ssl_certificate_key /etc/letsencrypt/live/media.maksim-pankov.ru/privkey.pem; # managed by Certbot
|
|
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
|
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
|
|
|
}
|
|
server {
|
|
if ($host = media.maksim-pankov.ru) {
|
|
return 301 https://$host$request_uri;
|
|
} # managed by Certbot
|
|
|
|
|
|
server_name media.maksim-pankov.ru;
|
|
listen 80;
|
|
return 404; # managed by Certbot
|
|
|
|
|
|
}
|