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) {
|