Назад | Перейти на главную страницу

Использование nginx в качестве обратного прокси для tomcat приводит к появлению новых jsessionid для каждого ssl-запроса

Я использую nginx в качестве обратного прокси для настройки tomcat, и все работает нормально для части MOST, единственная проблема, с которой я сталкиваюсь, заключается в том, что каждый запрос на адрес http приводит к созданию нового идентификатора JSESSION (этого не происходит в http), вот соответствующая часть конфигурации NGINX:

location / {

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-Proto https;
            proxy_redirect off;
            proxy_connect_timeout      240;
            proxy_send_timeout         240;
            proxy_read_timeout         240;
            proxy_pass http://localhost:8080;
      }

Есть идеи, почему я постоянно создаю новые jsessionids?

Добавьте следующий фрагмент в свой файл конфигурации и повторите попытку:

if ($http_cookie ~* "jsessionid=([^;]+)(?:;|$)") {
    set $co "jsessionid=$1";
}
proxy_set_header Cookie "$co";

В моей среде это поведение было вызвано Tomcat или сервлет ожидал другого пути cookie из-за изменения корня во время проксирования:

Установка пути через proxy_cookie_path помогло:

location / {
    proxy_pass http://localhost:8080/webapp/;
    proxy_cookie_path /webapp/;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}