поддержка HTTP/1.1 для проксирования

RaPaMaN rapaman at virthost.net
Wed Dec 29 00:33:33 MSK 2004


Добрый день, Игорь !

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)

Это нормально ? 

Заранее благодарен за ответ.

С Уважением,
Дмитрий.





More information about the nginx-ru mailing list