upload module 2.0.11

Valery Kholodkov valery+nginxru at grid.net.ru
Tue Nov 24 23:56:36 MSK 2009


CyberDem0n пишет:
> В модуле есть одна неприятная бага, которая тянется со времен обновления API в nginx-0.8.11.
> Если  keepalive_timeout > 0, то после аплоада перестают обрабатываться любые запросы.
> 
> Теперь расскажу как повторить подобное поведение.
> 
> /* nginx.conf */
> user nginx nginx;                                                                                                                           
> worker_processes 1;                                                                                                                         
> 
> error_log /var/log/nginx/error_log info;
> 
> events {
>         worker_connections  8192;
>         use epoll;
> }
> 
> http {
>         include         /etc/nginx/mime.types;
>         default_type    application/octet-stream;
> 
>         client_header_timeout   10m;
>         client_body_timeout     10m;
>         send_timeout            10m;
> 
>         connection_pool_size            256;
>         client_header_buffer_size       1k;
>         large_client_header_buffers     4 2k;
>         request_pool_size               4k;
> 
>         output_buffers  1 32k;
>         postpone_output 1460;
> 
>         sendfile        on;
>         tcp_nopush      on;
>         tcp_nodelay     on;
> 
>         keepalive_timeout       75 20;
> 
>         server {
>                 listen          127.0.0.1;
>                 server_name     localhost;
> 
>                 root /var/www;
> 
>                 location /example.php {
>                         if ($request_method = "GET") {
>                                 proxy_pass http://localhost:8080;
>                                 break;
>                         }
>                         upload_pass   @test;
>                         upload_store /tmp;
>                         upload_store_access user:r;
>                         upload_set_form_field $upload_field_name.name "$upload_file_name";
>                         upload_set_form_field $upload_field_name.content_type "$upload_content_type";
>                         upload_set_form_field $upload_field_name.path "$upload_tmp_path";
>                         upload_aggregate_form_field "$upload_field_name.md5" "$upload_file_md5";
>                         upload_aggregate_form_field "$upload_field_name.size" "$upload_file_size";
>                         upload_pass_form_field "^submit$|^description$";
>                         upload_cleanup 400 404 499 500-505;
>                 }
> 
>                 location @test {
>                         proxy_pass   http://localhost:8080;
>                 }
>         }
> }
> 
> _________________________________________________________________________
> --- nginx_upload_module-2.0.11/example.php      2009-11-18 18:19:10.000000000 +0300
> +++ example.php 2009-11-24 15:19:51.312792765 +0300
> @@ -28,10 +28,11 @@
>         }
> 
>      echo "";
> +    echo "setTimeout('location.href=\"/example.php\"', 1000);";
> 
>  }else{?>
>  Select files to upload
> -
> +
>  
>  
>  
> ______________________________________________________________________________
> 
> + Апач со стандартными настройками на порту 8080
> 
> 
> 
> Смысл в следующем, сразу после аплоада example.php показывает табличку, и потом через секунду выполняет при помощи javascript "редирект" на себя-же (чтобы опять показать форму).
> 
> Так вот, в этом "редиректе" страница example.php не загружается. При этом браузере запрос как-бы "залипает". То есть браузер показывает что пытается загрузить страницу, но результата дождаться за какое-либо разумное время невозможно.
> 
> Если-же указать keepalive_timeout 0; то всё ОК.

Можно попробовать патч?

-- 
Best regards,
Valery Kholodkov
-------------- next part --------------
A non-text attachment was scrubbed...
Name: upload_keepalive.patch
Type: text/x-diff
Size: 1026 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091124/060db3f2/attachment-0001.patch>


More information about the nginx-ru mailing list