http 401

Igor Sysoev is at rambler-co.ru
Tue Mar 7 15:26:33 MSK 2006


On Tue, 7 Mar 2006, Rommer wrote:

> Igor Sysoev wrote:
>> On Mon, 6 Mar 2006 rommer at active.by 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
-------------- next part --------------
--- 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;
             }


More information about the nginx-ru mailing list