ПРОЕКТЫ 


  АРХИВ 


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: http 401



On Tue, 7 Mar 2006, Rommer wrote:

Igor Sysoev wrote:
On Mon, 6 Mar 2006 rommer@xxxxxxxxx wrote:

Igor Sysoev wrote:
On Mon, 6 Mar 2006, Rommer wrote:

Почему, когда back-end выдает HTTP/1.0 401 Not Unauthorized nginx'у
nginx отдаёт клиету 502 Bad Gateway?

Как можно заставить nginx нормально пропускать такие ответы?

Должно работать. Нужен отладочный лог.


Разобрался:
апач выдавал в строке "HTTP/1.1  401  Not ..."
не по одному пробелу, а по 2 справа и слева от 401: HTTP/1.1__401__Status
В результате 502.


Кстати, можно сделать как-нибудь так, чтобы
такие кривые ответы
"HTTP/1.x  CODE  ..." от бэкэнда норманьно
обрабатывались proxy-модулем nginx'а?
Или это противоречит RFC? Браузеры (IE, Mozilla,
Opera) их нормально распознают.

Насколько я понимаю, это противоречит RFC:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Хотя их несложно обработать.

Сделайте пожалуйста такую обработку, все кривые сайты не профиксишь.
Делать patch к nginx и постоянно его портировать под новые версии
не очень удобно.

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


Игорь Сысоев
http://sysoev.ru
--- src/http/modules/ngx_http_proxy_module.c    Mon Feb  6 22:45:08 2006
+++ src/http/modules/ngx_http_proxy_module.c    Tue Mar  7 15:24:55 2006
@@ -961,6 +961,10 @@
 
         /* HTTP status code */
         case sw_status:
+            if (ch == ' ') {
+                break;
+            }
+
             if (ch < '0' || ch > '9') {
                 return NGX_HTTP_PROXY_PARSE_NO_HEADER;
             }


 




Copyright © Lexa Software, 1996-2009.