У меня есть следующие настройки:
location @public {
auth_basic off;
}
location @webdav {
proxy_set_header Host $host;
proxy_pass http://localhost:8080;
}
location / {
# WebDAV server
if ($request_method != GET) {
error_page 418 = @webdav;
return 418;
}
gzip on;
fancyindex on;
location ~ /(public|\.well-known)/ {
if ($remote_user = "") {
error_page 418 = @public;
return 418;
}
}
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
}
Я хочу перенаправить каждый не GET-запрос в мой внутренний обработчик WebDAV, написанный на Go.Папка /public
должна быть доступна без базовой аутентификации, в отличие от остальной файловой системы.
Однако для вложенных блоков местоположения мой родительский оператор if, кажется, игнорируется.Попытка любого не-GET запроса на /public
приводит к 505
, а на /robots.txt
возвращает мой сконфигурированный текст.Однако это не относится к gzip
или fancyindex
, так как /public
и robots.txt
сжаты и проиндексированы.