Give me your “nginx –V”

De: Dennis Becker [mailto:[email protected]]
Enviada em: terça-feira, 15 de maio de 2012 10:56
Para: [email protected]
Assunto: Re: [Pound Mailing List] Re: Bad HTTP response messages in Google 
Chrome with Transfer-Encoding: chunked

As of Nginx, this won't work. It only uses HTTP 1.0 if the client forces HTTP 
1.0, otherwise, it uses HTTP 1.1 with Tranfer-Encoding: chunked. No 
configuration option.
I don't know how this could be solved for Lighttpd and Apache, but that doesn't 
matter if one server system can't change the protocol version.
As far as I could find out, Pound neither could be forced to use HTTP 1.0 which 
lacks of opportunities.
On Tue, May 15, 2012 at 3:40 PM, Roberto Geraldo Pimenta Ribeiro Junior 
<[email protected]<mailto:[email protected]>> wrote:
A workaround for you is to disable chuncked transfer encoding from your backend.

Enviado via iPhone

Em 15/05/2012, às 10:09, "Dennis Becker" 
<[email protected]<mailto:[email protected]>> escreveu:
One week is gone, no response so far. It would be really nice if I could get 
any help with this, because this is really an annoying issue. I'll checked 
Opera meanwhile and it has also the same issue as Google Chrome and stops 
working on these long polling URLs due to bad HTTP response messages delivered 
by pound.


Regards,
Dennis

On Wed, May 9, 2012 at 5:42 PM, Dennis Becker 
<[email protected]<mailto:[email protected]>> wrote:
I have switched my local setup to use HTTP instead of HTTPS so that I can 
compare all HTTP Requests and Responses with ngrep. I had side-by-side 
terminals opened. The Requests were all ok, Here is the request from browser to 
pound:

T 2012/05/09 17:28:25.722352 127.0.0.1:36815<http://127.0.0.1:36815> -> 
127.0.0.1:8080<http://127.0.0.1:8080> [AP]
GET /nginx-poll/?key=abc HTTP/1.1.
Host: example:8080.
Connection: keep-alive.
Cache-Control: no-cache.
If-Modified-Since: Wed, 09 May 2012 15:28:25 GMT.
Pragma: no-cache.
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like 
Gecko) Chrome/18.0.1025.168 Safari/535.19.
If-None-Match: 0.
Accept: */*.
Referer: http://example.com:8080/.
Accept-Encoding: gzip,deflate,sdch.
Accept-Language: en-US,en;q=0.8.
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3.
Cookie: BUNCH_OF_COOKIES.
.

And here is the HTTP Request the pound sends to Nginx:

T 2012/05/09 17:28:25.724359 127.0.0.1:33670<http://127.0.0.1:33670> -> 
127.0.0.1:81<http://127.0.0.1:81> [A]
GET /nginx-poll/?key=abc HTTP/1.1.
Connection: keep-alive.
Cache-Control: no-cache.
If-Modified-Since: Wed, 09 May 2012 15:28:25 GMT.
Pragma: no-cache.
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like 
Gecko) Chrome/18.0.1025.168 Safari/535.19.
If-None-Match: 0.
Accept: */*.
Referer: http://example.com:8080/.
Accept-Encoding: gzip,deflate,sdch.
Accept-Language: en-US,en;q=0.8.
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3.
Cookie: BUNCH_OF

T 2012/05/09 17:28:25.724371 127.0.0.1:33670<http://127.0.0.1:33670> -> 
127.0.0.1:81<http://127.0.0.1:81> [AP]
_COOKIES.
host: example.com<http://example.com>.
X-Forwarded-For: 127.0.0.1.
.


And now the corresponding responses. First, we start wit the Response of Nginx:

T 2012/05/09 17:28:45.355341 127.0.0.1:81<http://127.0.0.1:81> -> 
127.0.0.1:33633<http://127.0.0.1:33633> [AP]
HTTP/1.1 304 Not Modified.
Server: nginx/1.0.14.<http://1.0.14.>
Date: Wed, 09 May 2012 15:28:45 GMT.
Content-Type: application/json.
Last-Modified: Wed, 09 May 2012 15:28:45 GMT.
Connection: keep-alive.
Transfer-Encoding: chunked.
Etag: 0.
.


T 2012/05/09 17:28:45.355381 127.0.0.1:81<http://127.0.0.1:81> -> 
127.0.0.1:33633<http://127.0.0.1:33633> [AP]
0.
.

As we can see, there is chunk which ends the response.

And here comes the response the pound sends from Nginx to the browser:

T 2012/05/09 17:28:45.355581 127.0.0.1:8080<http://127.0.0.1:8080> -> 
127.0.0.1:36811<http://127.0.0.1:36811> [AP]
HTTP/1.1 304 Not Modified.
Server: nginx/1.0.14.<http://1.0.14.>
Date: Wed, 09 May 2012 15:28:45 GMT.
Content-Type: application/json.
Last-Modified: Wed, 09 May 2012 15:28:45 GMT.
Connection: keep-alive.
Transfer-Encoding: chunked.
Etag: 0.
.


As you can see immidiately, there is no chunk which ends this message and 
Google Chrome cannot parse the complete response. Due to the fact that Google 
Chrome is really strict in parsing chunked response messages, this issue should 
be fixed in pound.



On Tue, May 8, 2012 at 9:15 AM, Dennis Becker 
<[email protected]<mailto:[email protected]>> wrote:
Hi,

we have a setup where pound is the load balancer in front of a NGinx Long 
Polling server. I can reproduce an issue where after a long poll ends with 
"HTTP 304 not modified", the next HTTP response message is corrupt. You'll get 
in Google Chrome messages like this:

0

HTTP/1.1 200 OK
Server: nginx/1.0.14
Date: Tue, 08 May 2012 05:58:03 GMT
Content-Type: application/json
Last-Modified: Tue, 08 May 2012 05:57:33 GMT
Connection: close
Etag: 0
Transfer-Encoding: chunked

2159
{"REMOVED_BODY_CONTENT"}

I also have this issue with a Lighttpd behind Pound using chunked encoding.

Google Chrome is really strict in it's parsing rules for chunked encoding. See 
http://code.google.com/p/chromium/issues/detail?id=39206#c12


I have found the issue with pound 2.5 but have also the same error with pound 
2.6 and 2.7.


When I use Apache as proxy everything works fine.

--
 Dennis Becker   [email protected]<mailto:[email protected]>
 Telefon:        +49 (0) 211-63 55 
55-97<tel:%2B49%20%280%29%20211-63%2055%2055-97>
 Telefax:        +49 (0) 211-63 55 
55-22<tel:%2B49%20%280%29%20211-63%2055%2055-22>

 sipgate GmbH - Gladbacher Str. 74 - 40219 Düsseldorf
 HRB Düsseldorf 39841 - Geschäftsführer: Thilo Salmon, Tim Mois
 Steuernummer: 106/5724/7147, Umsatzsteuer-ID: DE219349391

 www.sipgate.de<http://www.sipgate.de> - www.sipgate.at<http://www.sipgate.at> 
- www.sipgate.co.uk<http://www.sipgate.co.uk>



--
 Dennis Becker   [email protected]<mailto:[email protected]>
 Telefon:        +49 (0) 211-63 55 
55-97<tel:%2B49%20%280%29%20211-63%2055%2055-97>
 Telefax:        +49 (0) 211-63 55 
55-22<tel:%2B49%20%280%29%20211-63%2055%2055-22>

 sipgate GmbH - Gladbacher Str. 74 - 40219 Düsseldorf
 HRB Düsseldorf 39841 - Geschäftsführer: Thilo Salmon, Tim Mois
 Steuernummer: 106/5724/7147, Umsatzsteuer-ID: DE219349391

 www.sipgate.de<http://www.sipgate.de> - www.sipgate.at<http://www.sipgate.at> 
- www.sipgate.co.uk<http://www.sipgate.co.uk>



--
 Dennis Becker   [email protected]<mailto:[email protected]>
 Telefon:        +49 (0) 211-63 55 
55-97<tel:%2B49%20%280%29%20211-63%2055%2055-97>
 Telefax:        +49 (0) 211-63 55 
55-22<tel:%2B49%20%280%29%20211-63%2055%2055-22>

 sipgate GmbH - Gladbacher Str. 74 - 40219 Düsseldorf
 HRB Düsseldorf 39841 - Geschäftsführer: Thilo Salmon, Tim Mois
 Steuernummer: 106/5724/7147, Umsatzsteuer-ID: DE219349391

 www.sipgate.de<http://www.sipgate.de> - www.sipgate.at<http://www.sipgate.at> 
- www.sipgate.co.uk<http://www.sipgate.co.uk>



--
 Dennis Becker   [email protected]<mailto:[email protected]>
 Telefon:        +49 (0) 211-63 55 55-97
 Telefax:        +49 (0) 211-63 55 55-22

 sipgate GmbH - Gladbacher Str. 74 - 40219 Düsseldorf
 HRB Düsseldorf 39841 - Geschäftsführer: Thilo Salmon, Tim Mois
 Steuernummer: 106/5724/7147, Umsatzsteuer-ID: DE219349391

 www.sipgate.de<http://www.sipgate.de> - www.sipgate.at<http://www.sipgate.at> 
- www.sipgate.co.uk<http://www.sipgate.co.uk>

Reply via email to