Запуск WEBDav сервера -unknown directive "dav_ext_methods"

Система Raspberry PI OS (bookworm), обновлена на сегодняшний день
Raspberry PI 4 (arm64)

# angie -V
Angie version: Angie/1.4.1
built with OpenSSL 3.0.11 19 Sep 2023
TLS SNI support enabled
configure arguments: --prefix=/etc/angie --conf-path=/etc/angie/angie.conf --error-log-path=/var/log/angie/error.log --http-log-path=/var/log/angie/access.log --lock-path=/run/angie.lock --modules-path=/usr/lib/angie/modules --pid-path=/run/angie.pid --sbin-path=/usr/sbin/angie --http-client-body-temp-path=/var/cache/angie/client_temp --http-fastcgi-temp-path=/var/cache/angie/fastcgi_temp --http-proxy-temp-path=/var/cache/angie/proxy_temp --http-scgi-temp-path=/var/cache/angie/scgi_temp --http-uwsgi-temp-path=/var/cache/angie/uwsgi_temp --user=angie --group=angie --with-file-aio --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_v3_module --with-mail --with-mail_ssl_module --with-stream --with-stream_mqtt_preread_module --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --feature-cache=../angie-feature-cache --with-ld-opt='-Wl,-z,relro -Wl,-z,now'

Модуль dav_ext установлен

# apt install angie-module-dav-ext
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
angie-module-dav-ext is already the newest version (1.4.1-1~bookworm).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

# cat /etc/angie/http.d/webdav.conf
server {
    listen       8080;
    server_name  localhost;

    access_log  /var/log/angie/wd.access.log  main;

    location / {
        root   /mnt/TOSHIBA_500GB/sda1/_WEBDav;
        index  index.html index.htm;
    }

    location /status/ {
        api     /status/;
        allow   127.0.0.1;
        deny    all;
    }

    location / {
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS;
        dav_access user:rw group:rw all:rw;

        client_max_body_size 0;
        create_full_put_path on;
        client_body_temp_path /tmp/;

        auth_pam "Restricted";
        auth_pam_service_name "common-auth";
    }
}

angie: [emerg] unknown directive “dav_ext_methods” in /etc/angie/http.d/webdav.conf:20

Добрый день!

Убедитесь, пожалуйста, что вы не забыли загрузить динамический модуль директивой load_module:

load_module modules/ngx_http_dav_ext_module.so;
# ls -al /etc/angie/modules
lrwxrwxrwx 1 root root 22 Feb 15 18:04 /etc/angie/modules -> /usr/lib/angie/modules
# cat /etc/angie/angie.conf |grep -v "^$\|^#"
user  angie;
worker_processes  auto;
worker_rlimit_nofile 65536;
error_log  /var/log/angie/error.log notice;
pid        /run/angie.pid;
events {
    worker_connections  65536;
}
http {
    include       /etc/angie/mime.types;
    default_type  application/octet-stream;
    load_module  modules/ngx_http_dav_ext_module.so
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    log_format extended '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" rt="$request_time" '
                        '"$http_user_agent" "$http_x_forwarded_for" '
                        'h="$host" sn="$server_name" ru="$request_uri" u="$uri" '
                        'ucs="$upstream_cache_status" ua="$upstream_addr" us="$upstream_status" '
                        'uct="$upstream_connect_time" urt="$upstream_response_time"';
    access_log  /var/log/angie/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/angie/http.d/*.conf;
}
"load_module" directive is not allowed here in /etc/angie/angie.conf:22

Куда прописывать параметр load_module ?

Использование директивы load_module (по ссылке — документация) допустимо только в контексте main. То есть, как-то так:

user  angie;
worker_processes  auto;
worker_rlimit_nofile 65536;
error_log  /var/log/angie/error.log notice;
pid        /run/angie.pid;

load_module modules/ngx_http_dav_ext_module.so;

events {
    worker_connections  65536;
}
# cat /etc/angie/angie.conf |grep -v "^$\|^#"
user  angie;
worker_processes  auto;
worker_rlimit_nofile 65536;
error_log  /var/log/angie/error.log notice;
pid        /run/angie.pid;
events {
    worker_connections  65536;
}
load_module  modules/ngx_http_dav_ext_module.so;
http {
    include       /etc/angie/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    log_format extended '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" rt="$request_time" '
                        '"$http_user_agent" "$http_x_forwarded_for" '
                        'h="$host" sn="$server_name" ru="$request_uri" u="$uri" '
                        'ucs="$upstream_cache_status" ua="$upstream_addr" us="$upstream_status" '
                        'uct="$upstream_connect_time" urt="$upstream_response_time"';
    access_log  /var/log/angie/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/angie/http.d/*.conf;
}

# systemctl restart angie.service
Job for angie.service failed because the control process exited with error code.
See "systemctl status angie.service" and "journalctl -xeu angie.service" for details.
# journalctl -xeu angie.service
Mar 13 23:00:26 cloud02 angie[1923401]: angie: [emerg] "load_module" directive is specified too late in /etc/angie/angie.conf:13
Mar 13 23:00:26 cloud02 systemd[1]: angie.service: Control process exited, code=exited, status=1/FAILURE

Не помогает

перенес выше events
помогло

Обратите внимание, пожалуйста: в моём сообщении директива load_module находится выше блока events.

А есть аналог этого модуля для Angie

Директива limit_rate позволяет ограничить скорость передачи ответа клиенту в рамках одного запроса.

Модуля, аналогичного указанному, в репозитории Angie нет (полный список динамических модулей, представленных в репозитории: динамические модули)