Welcome! Log In Create A New Profile

Advanced

Re: upload module 2.0.11

November 24, 2009 07:51AM
В модуле есть одна неприятная бага, которая тянется со времен обновления 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 "</table>";
+ echo "<script>setTimeout('location.href=\"/example.php\"', 1000);</script>";

}else{?>
<h2>Select files to upload</h2>
-<form name="upload" method="POST" enctype="multipart/form-data" action="/upload">
+<form name="upload" method="POST" enctype="multipart/form-data" action="/example.php">
<input type="file" name="file1"><br>
<input type="file" name="file2"><br>
<input type="file" name="file3"><br>
______________________________________________________________________________

+ Апач со стандартными настройками на порту 8080



Смысл в следующем, сразу после аплоада example.php показывает табличку, и потом через секунду выполняет при помощи javascript "редирект" на себя-же (чтобы опять показать форму).

Так вот, в этом "редиректе" страница example.php не загружается. При этом браузере запрос как-бы "залипает". То есть браузер показывает что пытается загрузить страницу, но результата дождаться за какое-либо разумное время невозможно.

Если-же указать keepalive_timeout 0; то всё ОК.
Subject Author Posted

upload module 2.0.11

Valery Kholodkov November 23, 2009 05:46PM

Re: upload module 2.0.11

Timur Bakeyev November 24, 2009 06:45AM

Re: upload module 2.0.11

Valery Kholodkov November 24, 2009 07:46AM

Re: upload module 2.0.11

Timur Bakeyev November 24, 2009 08:45AM

Re: upload module 2.0.11

CyberDem0n November 24, 2009 07:51AM

Re: upload module 2.0.11

Andrey Velikoredchanin November 24, 2009 08:56AM

Re: upload module 2.0.11

Andrey Zloy November 24, 2009 10:10AM

Re: upload module 2.0.11

Valery Kholodkov November 24, 2009 03:58PM

Re: upload module 2.0.11

CyberDem0n November 25, 2009 01:18AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 302
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