ПРОЕКТЫ 


  АРХИВ 


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: Proxy HTTPS upload problem



On Thu, May 31, 2007 at 02:31:35PM +0300, Vladimir Shiray wrote:

> Igor Sysoev wrote:
> >On Thu, May 31, 2007 at 01:18:01PM +0300, Vladimir Shiray wrote:
> >
> >  
> >>При попытке аплоада файла через проксированное HTTPS соединение
> >>возвращается следующее сообщение об ошибке от backend:
> >>-------
> >>Bad request!
> >>
> >>Your browser (or proxy) sent a request that this server could not 
> >>understand.
> >>
> >>If you think this is a server error, please contact the webmaster.
> >>Error 400
> >>www.kabbalah.info
> >>Apache/2
> >>---------
> >>
> >>Лог Apache:
> >>---------
> >>212.179.128.162 - - [31/May/2007:03:08:03 -0700] "POST /test/upload.php 
> >>HTTP/1.0" 400 922 "https://www.kabbalah.info/test/upload.html"; 
> >>"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) 
> >>Gecko/20070515 Firefox/2.0.0.4" 21
> >>---------
> >>
> >>HTTPS используется как для соединения между клиентом и nginx, так
> >>и между nginx и backend:
> >>----------
> >>       location / {
> >>               proxy_pass  https://64.40.103.100;
> >>               proxy_set_header  Host  $http_host;
> >>               proxy_set_header  X-Forwarded-For  $remote_addr;
> >>       }
> >>----------
> >>
> >>При этом, если размер файла не превышает  приблизительно 50К,  то
> >>все проходит нормально.
> >>Через HTTP все проходит успешно.
> >>
> >>Вот тестовые линки:
> >>   https://www.kabbalah.info/test/upload.html
> >>   http://www.kabbalah.info/test/upload.html
> >>
> >>Frontend Server:    CentOS 4.5 + nginx-0.5.22
> >>Backend Server:    CentOS 3.8 + httpd-2.0.46-61.ent.centos3
> >>    
> >
> >Нужен отладочный лог.
> >
> >  
> http://www.kabbalah.info/test/kabbalah.info-ssl-error.log

Прилагаемый патч должен помочь.


-- 
Игорь Сысоев
http://sysoev.ru
Index: src/core/ngx_output_chain.c
===================================================================
--- src/core/ngx_output_chain.c (revision 545)
+++ src/core/ngx_output_chain.c (working copy)
@@ -377,8 +377,9 @@
             dst->in_file = 0;
         }
 
-        if (src->last_buf && src->pos == src->last) {
-            dst->last_buf = 1;
+        if (src->pos == src->last) {
+            dst->flush = src->flush;
+            dst->last_buf = src->last_buf;
         }
 
     } else {
@@ -417,8 +418,9 @@
 
         src->file_pos += n;
 
-        if (src->last_buf && src->file_pos == src->file_last) {
-            dst->last_buf = 1;
+        if (src->pos == src->last) {
+            dst->flush = src->flush;
+            dst->last_buf = src->last_buf;
         }
     }
 
@@ -444,8 +446,10 @@
 
         size += ngx_buf_size(in->buf);
 
-        ngx_log_debug1(NGX_LOG_DEBUG_CORE, ctx->connection->log, 0,
-                       "chain writer buf size: %uO", ngx_buf_size(in->buf));
+        ngx_log_debug2(NGX_LOG_DEBUG_CORE, ctx->connection->log, 0,
+                       "chain writer buf fl:%d s:%uO",
+                       in->buf->flush,
+                       ngx_buf_size(in->buf));
 
         cl = ngx_alloc_chain_link(ctx->pool);
         if (cl == NULL) {


 




Copyright © Lexa Software, 1996-2009.