Почему, когда 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) их нормально распознают.
Сделайте пожалуйста такую обработку, все кривые сайты не профиксишь.
Делать patch к nginx и постоянно его портировать под новые версии
не очень удобно.
Прилагаемый патч должен решить эту проблему.
------------------------------------------------------------------------
--- 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;
}
Спасибо.
Этот патч будет включён в последующие версии nginx'а?