Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: поддержка HTTP/1.1 для проксирования
Добрый день, Игорь !
On Tuesday 28 December 2004 16:17, Igor Sysoev wrote:
> On Mon, 27 Dec 2004, RaPaMaN wrote:
> > А я могу изменять исходники nginx ?
>
> Конечно, это разрешается в лизенции, однако, я не обещаю включить любой
> патч в дистрибутив. В данном случае я могу только обощать не сильно менять
> области, близкие к патчу, так, чтобы он накладывался без проблем на новые
> версии.
Спасибо, но изменение - это ваше право :) На то они и патчи, чтобы их
делать :) Вы получали на i_g_or [at] s y so e v . ru патч мой ?
У меня вопрос, я обнаружил, что если включен параметр, который я добавил и
приходит запрос по HTTP 1.0, то nginx валится:
2004/12/27 20:11:32 [debug] 8781#0: *1 http process request line
2004/12/27 20:11:32 [debug] 8781#0: *1 recv: fd:10 154 of 2048
2004/12/27 20:11:32 [debug] 8781#0: *1 http request line: "GET / HTTP/1.0"
2004/12/27 20:11:32 [debug] 8781#0: *1 http uri: "/"
2004/12/27 20:11:32 [debug] 8781#0: *1 http args: ""
2004/12/27 20:11:32 [debug] 8781#0: *1 http exten: ""
2004/12/27 20:11:32 [debug] 8781#0: *1 http process request header line
2004/12/27 20:11:32 [debug] 8781#0: *1 http header: "Host:
www.virthost.net:81"
2004/12/27 20:11:32 [debug] 8781#0: *1 http header: "User-Agent: Links
(1.00pre11; Linux 2.6.9-std26-smp-alt11
2004/12/27 20:11:32 [debug] 8781#0: *1 http header: "Accept: */*"
2004/12/27 20:11:32 [debug] 8781#0: *1 http header: "Accept-Encoding: gzip"
2004/12/27 20:11:32 [debug] 8781#0: *1 http header done
2004/12/27 20:11:32 [debug] 8781#0: *1 event timer del: 10: 83368
2004/12/27 20:11:32 [debug] 8781#0: *1 http rewrite handler
2004/12/27 20:11:32 [debug] 8781#0: *1 find location
2004/12/27 20:11:32 [debug] 8781#0: *1 find location: "/"
2004/12/27 20:11:32 [debug] 8781#0: *1 http cl:-1 max:10485760
2004/12/27 20:11:32 [debug] 8781#0: *1 http proxy init upstream, client timer:
0
2004/12/27 20:11:32 [debug] 8781#0: *1 epoll add event: fd:10 op:3 ev:80000005
2004/12/27 20:11:32 [notice] 8780#0: signal 17 (SIGCHLD) received
2004/12/27 20:11:32 [alert] 8780#0: worker process 8781 exited on signal 11
Т.е. падает с ошибкой 17, как я понял - это хедеры неправильные.
Падает он в следующем месте:
/* the "X-Client-Connection" header */
if (p->lcf->set_x_client_connection_status) {
b->last = ngx_cpymem(b->last, x_client_connection_status_header,
sizeof(x_client_connection_status_header) - 1);
b->last = ngx_cpymem(b->last, r->headers_in.connection->value.data,
r->headers_in.connection->value.len);
*(b->last++) = CR; *(b->last++) = LF;
}
Как я понимаю, в моем случае не приходит хедер Connection от клиента и
r->headers_in.connection->value.data - пустое значение и соответственно
валится прокси модуль.
Еще вопрос, r->headers_in.connection->value.data - всегда может иметь только
значения keep-alive или close, или может быть пустым или значение keep-alive
только если соединение с keep-alive, а иначе - пустое (т.е. close) ?
Еще вопрос, когда я делал дебаг, привожу кусок лога:
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "Date: Tue, 28 Dec
2004 01:09:05 GMT"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "Server: Apache"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "Vary:
Accept-Encoding"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "X-Powered-By:
PHP/4.3.10"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "Content-Encoding:
gzip"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "Content-Length:
4372"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "Keep-Alive:
timeout=7"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "Connection:
Keep-Alive"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header: "Content-Type:
image/gif"
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy header done
2004/12/27 20:09:05 [debug] 8507#0: *1 HTTP/1.1 200 OK
Server: nginx/0.1.13
Date: Tue, 28 Dec 2004 01:09:05 GMT
Content-Type: image/gif
Connection: keep-alive
Keep-Alive: timeout=20
Vary: Accept-Encoding
X-Powered-By: PHP/4.3.10
Content-Encoding: gzip
Content-Length: 4372
Keep-Alive: timeout=7
2004/12/27 20:09:05 [debug] 8507#0: *1 http write filter: l:0 f:0 s:269
2004/12/27 20:09:05 [debug] 8507#0: *1 http proxy process upstream
2004/12/27 20:09:05 [debug] 8507#0: *1 pipe read upstream: 1
2004/12/27 20:09:05 [debug] 8507#0: *1 pipe preread: 4372
2004/12/27 20:09:05 [debug] 8507#0: *1 readv: 1:60925
2004/12/27 20:09:05 [debug] 8507#0: *1 readv() not ready (11: Resource
temporarily unavailable)
2004/12/27 20:09:05 [debug] 8507#0: *1 pipe recv chain: -2
2004/12/27 20:09:05 [debug] 8507#0: *1 pipe buf
2004/12/27 20:09:05 [debug] 8507#0: *1 pipe buf free 087B2690, last 087B3893,
size: 60925
2004/12/27 20:09:05 [debug] 8507#0: *1 pipe write downstream: 1
2004/12/27 20:09:05 [debug] 8507#0: *1 pipe write busy: 0
2004/12/27 20:09:05 [debug] 8507#0: *1 pipe write: out:00000000, f:0
Вот следующая строка появлется регулярно при всех запросах:
2004/12/27 20:09:05 [debug] 8507#0: *1 readv() not ready (11: Resource
temporarily unavailable)
Это нормально ?
Заранее благодарен за ответ.
С Уважением,
Дмитрий.
|