webdav запись файла по другому root в случае если закончилось место

Иван Мишин simplebox66 на gmail.com
Ср Мар 16 15:04:06 UTC 2016


Добрый день!

Вопрос следующий:
Есть nginx 1.8.1, на нем настроен вебдав. Конфиг простой

>  server {
>         listen 80;
>         server_name     testdav;
>
>        access_log /var/log/nginx/testdav_access.log main;
>        error_log /var/log/nginx/testdav_error.log error;
>                 location / {
>                 root /tmp/ram/testdav;
>                 open_file_cache off;
>                 client_max_body_size 1000m;
>                 dav_methods PUT;
>                 dav_access user:rw group:r all:r;
>                 create_full_put_path on;
>         }

В случае когда nginx записывает файл в  /tmp/ram/testdav и там кончается
место, хочется сделать так чтобы nginx этот файл записал в другое место
/tmp2/ram/testdav.
Есть идеи как это реализовать?
В случае нехватки места nginx отдает 500 ошибку. пробовал конфиг

> server {
>         listen 80;
>         server_name     testdav;
>
>        access_log /var/log/nginx/testdav_access.log main;
>        error_log /var/log/nginx/testdav_error.log error;
>
>         location / {
>                          error_page      500 = @e500;
>
>                 root /tmp/ram/testdav;
>                 open_file_cache off;
>                 client_max_body_size 1000m;
>
>                 dav_methods PUT;
>                 dav_access user:rw group:r all:r;
>                 create_full_put_path on;
>         }
>
>         location @e500 {
>                  root /tmp2/ram/testdav;
>                 open_file_cache off;
>                 client_max_body_size 1000m;
>                 dav_methods PUT;
>                 dav_access user:rw group:r all:r;
>                 create_full_put_path on;
>         }
> }


Но не работает, в логах:

> 2016/03/16 17:40:20 [alert] 15872#0: *1 write() has written only 24576 of
> 2338816 to /tmp/ram/testdav/tengine.tar.0000000002, client: 127.0.0.1,
> server: testdav, request: "PUT /tengine.tar HTTP/1.1", host: "testdav"
> 2016/03/16 17:40:20 [crit] 15872#0: *1 chmod()
> "/var/cache/nginx/client_temp/0000000001" failed (2: No such file or
> directory), client: 127.0.0.1, server: testdav, request: "PUT /tengine.tar
> HTTP/1.1", host: "testdav"
> 2016/03/16 17:40:20 [crit] 15872#0: *1 unlink()
> "/var/cache/nginx/client_temp/0000000001" failed (2: No such file or
> directory), client: 127.0.0.1, server: testdav, request: "PUT /tengine.tar
> HTTP/1.1", host: "testdav"
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20160316/66e0963c/attachment.html>


Подробная информация о списке рассылки nginx-ru