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