Здравствуйте, обнаружил конфликт в работе модулей Dav и Mirror.
Пример конфигурации, при которой Dav модуль всегда будет возвращать HTTP 500, причем без записи в лог: location / { root /somedir; aio threads; client_max_body_size 30m; dav_access user:rw group:rw all:rw; dav_methods PUT; create_full_put_path on; client_body_temp_path /somedir/temp 1 2; mirror /mirror/127.0.0.2:80; } location ~* /mirror/(?<backend>.*) { internal; client_max_body_size 0; proxy_pass http://$backend/$request_uri; proxy_ignore_client_abort on; proxy_buffering off; proxy_method PUT; proxy_request_buffering off; proxy_connect_timeout 5s; } Так происходит из-за того, что модуль ngx_http_dav_module, который работает в фазе NGX_HTTP_CONTENT_PHASE требует, чтобы тело запроса было сохранено во временный файл r->request_body_in_file_only = 1; r->request_body_in_persistent_file = 1; r->request_body_in_clean_file = 1; r->request_body_file_group_access = 1; r->request_body_file_log_level = 0; rc = ngx_http_read_client_request_body(r, ngx_http_dav_put_handler); Однако модуль ngx_http_mirror_module, который работает в фазе NGX_HTTP_PRECONTENT_PHASE так же считывает содержимое тела запроса, но делает это раньше и с параметрами по умолчанию Default: client_body_in_file_only off; В итоге мы пытаемся повторно считать тело запроса, но метод ngx_http_read_client_request_body возвращает уже считанную информацию и проверка в методе ngx_http_dav_put_handler не проходит. static void ngx_http_dav_put_handler(ngx_http_request_t *r) { /****** some code here ******/ if (r->request_body == NULL || r->request_body->temp_file == NULL) { ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); return; } По идее, чтобы сохранить независимость модулей нужно реализовывать сброс считанного буфера в файл, но лично я решил проблему просто добавив директиву client_body_in_file_only clean; Если я прав, добавьте, пожалуйста, эту информацию в документацию. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278335,278335#msg-278335 _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru