PUT & access_by_lua_file

Илья Шипицин chipitsine at gmail.com
Thu Apr 16 10:33:15 UTC 2015


чтобы ответить до начала передачи файла, надо реализовать "Expect: 100-Continue"


16 апреля 2015 г., 13:27 пользователь itcod <nginx-forum at nginx.us> написал:
> Здравствуйте уважаемые!
> Наблюдаю странное поведение nginx.
> В тестовом авторизационном файле луа сказано, что метод PUT запрещён (см
> листинг ниже).
> И при этом когда захожу вижу, что сначало nginx разрешает PUT и идет
> передача файла на WEBDAV и только после завершения передачи файла nginx
> стартует access_by_lua_file /etc/nginx/lua/auth-dav1.lua и возвращает запрет
> PUT(передачи файла)... см лог ниже.
> По факту получается, что я не могу запретить из луа-авторизатора передачу
> файла? конечно его размещение запрещается... но при этом он качается на
> сервер и излишне грузит nginx и канал!!!
> Почему так?  Это баг, фича, я глючу или ещё чвото?
>
> ------------------------
> лог файл BitKinex (кстати FAR-NetDrive ведёт себя анналогично)
> Resolving host name "dav.example.com" ...
> Connecting ( dav.example.com => ip: 10.0.0.1, port: 80 )
> Connected (10.0.0.1:80)
> <<< PUT /IMG_20150414_184225.jpg HTTP/1.1
> <<< Host: dav.example.com
> <<< User-Agent: BitKinex/3.2.3
> <<< Accept: */*
> <<< Pragma: no-cache
> <<< Cache-Control: no-cache
> <<< Content-Length: 696983
> <<< Content-Type: application/octet-stream
> <<< Translate: f
>>>> HTTP/1.1 405 Not Allowed
>>>> Server: nginx/0.8.54
>>>> Date: Thu, 16 Apr 2015 08:08:52 GMT
>>>> Content-Type: text/html
>>>> Connection: keep-alive
>>>> Content-Length: 173
> Connection closed
>
> -----------------------------
> Конфиг virt
>
> dav.conf
> server {
>     listen       80;
>     server_name  dav.example.com;
>     server_name_in_redirect     off;
>     access_log /var/log/nginx/dav-access.log main;
>     resolver 10.255.255.1 [::1]:5353;
>         set $dir /opt/home;
>         set $dir_path $dir;
>         if ($uri ~* ^(.*)([$/].*)$) {
>                 set $dir_path $dir$1;
>         }
>         set $home $dir_path;
>         set $sadm_passwd .htpsw;
>         set $user_passwd .uhtpasswd;
>     location / {
>         access_by_lua_file /etc/nginx/lua/auth-dav1.lua;
>         dav_methods PUT DELETE MKCOL COPY MOVE;
>         dav_ext_methods PROPFIND OPTIONS;
>         create_full_put_path on;
>         dav_access user:rw group:rw;
>         client_body_temp_path /opt/itcod-dav.tmp/;
>         client_max_body_size 0;
>         autoindex on;
>         root /opt/home/;
>     }
>     location ~/\.ht {
>         deny all;
>     }
> }
> ---------------------------------------------------
> тестовый листинг луа
> auth-dav1.lua
>
> if ngx.var.request_method == 'PUT' then
>    ngx.exit(405)
> end
>
> PS: так же пробовал ngx.exit(403) ngx.exit(423) - результат не меняется.
> сначало грузит потом запрещает.
>
> Posted at Nginx Forum: http://forum.nginx.org/read.php?21,258069,258069#msg-258069
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


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