Переопределение заголовка "Connection"

Александр Бабин aler2 at yandex.ru
Tue Jul 2 10:07:23 UTC 2013


Привет всем !
Столкнулся с такой проблемой. Есть некий портал, крутится на JBOSS. Используется NGINX в качестве front-end. По документации настроен keep-alive:

http{
...
keepalive_timeout 45 45;
keepalive_requests 1000;
...
}

А вот редирект на JBOSS, то есть на back-end:

server{
...
location /our-portal/ {
proxy_pass http://127.0.0.1:8080;
break;
error_page 404 = @404;
error_page 502 = @502;
error_page 504 = @504;
}
...
}

Проанализировал сетевые дампы между клиентом , nginx и jboss, и оказалось, что в случае проксирования клиенту всегда приходит Connection:close . В этом вся и проблема, несмотря на настройки в Nginx, возможно , что-то не так настроено...
СтОит отметить, что back-end ВСЕГДА возвращает вообще ответ без заголовка Connection. Причем это не зависит от заголовка запроса. Таким образом, в качестве исходных данных считаем, что back-end НИКОГДА не шлет заголовок Connection. 
Я попытался в реврайт добавить ручками нужный заголовок через more_set_headers:

location /our-portal/ {
proxy_pass http://127.0.0.1:8080;
more_set_headers 'connection: keep-alive';
break;
error_page 404 = @404;
error_page 502 = @502;
error_page 504 = @504;
}

но в этом случае в браузер приходит "Connection : close, keep-alive", и здесь, согласно документации, должно приходить только одно значение. Так что , как будут вести себя разные типы браузеров - неясно. 
Как быть в этом случае ? как заставить отдавать "Connection: keep-alive" ? если это возможно..

Спасибо!



Подробная информация о списке рассылки nginx-ru