чтобы ответить до начала передачи файла, надо реализовать "Expect: 100-Continue"
16 апреля 2015 г., 13:27 пользователь itcod <[email protected]> написал: > Здравствуйте уважаемые! > Наблюдаю странное поведение 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 > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx-ru _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
