upload файла размером больше client_max_body_size

Sergio Gorelyshev cto at tech4money.biz
Thu Oct 18 18:02:45 MSD 2007


Доброго времени суток.

Есть связка apache2 + nginx в кач-ве бэкенда.

Проблема: при аплоде файла размером больше client_max_body_size  
наблюдается непонятное поведение (скорее всего nginx): в error.log  
появляется сообщение:

2007/10/18 17:20:34 [error] 6325#0: *1 client intented to send too  
large body: 1191520 bytes, client: 87.252.238.164, server:  
www.site.com, URL: "/settings/", host: "www.site.com", referrer:  
"https://www.site.com/settings/"

После этого по истечении ровно proxy_read_timeout в этом же логе:

2007/10/18 17:21:34 [error] 6325#0: *1 upstream timed out (110:  
Connection timed out) while reading response header from upstream,  
client: 87.252.238.164, server: www.site.com, URL: "/settings/",  
upstream: "https://127.0.0.1:4431/settings/", host: "www.site.com",  
referrer: "https://www.site.com/settings/"

При этом никаких признаков 413 вообще нет (проверял IE, FF, Opera,  
Safari), только в FF и Opera отдается 504 с дефолтовым(!!!)  
контентом, несмотря на директивы

error_page   504 /504.html;
location /504.html {
             root  /home/www/htdocs/static;
}

В логах apache про POST вообще ничего нет, из чего сделал вывод, что  
затыкается именно на nginx. В логе access.log (nginx) появляется строка:

87.252.238.164 - - [18/Oct/2007:17:22:53 +0400] "POST /settings/ HTTP/ 
1.1" 504 183 " https://www.site.com/settings/" "Opera/9.23 (Windows  
NT 5.1; U; en)"

Но опять же,  вместо кастомной 504 отдается, видимо built in, 504 -  
Gateway time out

Долго игрался со всякими timeout'ами в nginx, однако только 1 имеет  
видимый эффект: proxy_read_timeout. Именно с таким интервалом в  
error.log отображаются 2 предыдущих сообщения.  Однако, судя по  
документации, этот параметр определяет таймаут между apache (в моем  
случае) и nginx.

Интересует возможность отображения кастомной страницы в случае, если  
размер файла больше client_max_body_size.

nginx version: nginx/0.5.31

Спасибо.

P.S. http://sysoev.ru/web/upload.html читал.

P.P.S. В
http://sysoev.ru/nginx/docs/example.html

proxy_connect_timeout      90;

при этом http://sysoev.ru/nginx/docs/http/ 
ngx_http_proxy_module.html#proxy_connect_timeout:
Директива задаёт таймаут для соединения с проксированным сервером.  
Необходимо иметь в виду, что этот таймаут не может быть больше 75  
секунд.

Это просто FYI.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20071018/30617a79/attachment.html>


More information about the nginx-ru mailing list