This commit is contained in:
2025-07-20 13:15:46 +00:00
parent 63b2e5900a
commit 1cd2810480
13 changed files with 176 additions and 34 deletions

View File

@@ -0,0 +1,90 @@
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
}