Roman Arutyunyan
June 30, 2014 11:18AM
Hello!

On 28 Jun 2014, at 10:26, audvare <nginx-forum@nginx.us> wrote:

> Somehow uploadprogress seems to be affecting a request unrelated. I am using
> Cyberduck on Windows to test WebDAV (over HTTPS). It successfully logs in,
> lists files, etc. But it does not download any files because it does not
> like that PROPFIND on a file gives a 405 status. Cut down log:
>
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 http request line: "PROPFIND
> /video/avgn/t_screwattack_avgn_bugsbcc_901_gt.mp4 HTTP/1.1"
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 http uri:
> "/video/avgn/t_screwattack_avgn_bugsbcc_901_gt.mp4"
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 using configuration "\.mp4$"
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 http finalize request: 405,
> "/video/avgn/t_screwattack_avgn_bugsbcc_901_gt.mp4?" a:1, c:1
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 http special response: 405,
> "/video/avgn/t_screwattack_avgn_bugsbcc_901_gt.mp4?"
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 http set discard body
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 uploadprogress error-tracker
> error: 405
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 uploadprogress error-tracker
> not tracking in this location
> 2014/06/27 23:10:50 [debug] 28436#0: *569278 HTTP/1.1 405 Not Allowed
> Server: nginx
> Date: Sat, 28 Jun 2014 06:10:50 GMT
> Content-Type: text/html
> Content-Length: 166
> Connection: keep-alive
> Keep-Alive: timeout=20
>
> My configuration is like this (trying to keep only relevant parts):
> server {
> ...
>
> dav_methods off;
> create_full_put_path on;
> dav_access group:r all:r;
> dav_ext_methods PROPFIND OPTIONS;
>
> location ~ \.mp4$ {
> mp4;
> mp4_buffer_size 1m;
> mp4_max_buffer_size 5m;
> }
> }
>
> When I comment out the mp4 location the client downloads the file fine. But
> I do want to use the mp4 module to optimise for those files.

If you have “mp4” directive in a location, this location will only process GET and HEAD
requests and reply with "405 Not Allowed" to all other HTTP methods. No matter if you
have dav or not you will get 405 to PROPFIND/OPTIONS/PUT/etc due to mp4 module restrictions.

Currently nginx does not seem to be able to do what you want. If you’re ready to patch
the source here’s the patch fixing the issue.

diff -r 0dd77ef9f114 src/http/modules/ngx_http_mp4_module.c
--- a/src/http/modules/ngx_http_mp4_module.c Fri Jun 27 13:06:09 2014 +0400
+++ b/src/http/modules/ngx_http_mp4_module.c Mon Jun 30 19:10:59 2014 +0400
@@ -431,7 +431,7 @@ ngx_http_mp4_handler(ngx_http_request_t
ngx_http_core_loc_conf_t *clcf;

if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))) {
- return NGX_HTTP_NOT_ALLOWED;
+ return NGX_DECLINED;
}

if (r->uri.data[r->uri.len - 1] == '/') {

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

dav and dav_ext, mp4 module, PROPFIND not working for files

audvare June 28, 2014 02:26AM

Re: dav and dav_ext, mp4 module, PROPFIND not working for files

Roman Arutyunyan June 30, 2014 11:18AM

Re: dav and dav_ext, mp4 module, PROPFIND not working for files

audvare June 30, 2014 11:29AM

Re: dav and dav_ext, mp4 module, PROPFIND not working for files

audvare July 01, 2014 01:35AM

Re: dav and dav_ext, mp4 module, PROPFIND not working for files

Roman Arutyunyan July 01, 2014 12:30PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 295
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready