ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: upload module 2.0.11



В модуле есть одна неприятная бага, которая тянется со времен обновления 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; то всё ОК.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,25139,25286#msg-25286


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.