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

Tomcat за прокси-сервером nginx предоставляет новые jsessionids для каждого запроса

У меня есть веб-приложение на основе ReactJS, которое обслуживает nginx на /. Это веб-приложение связывается с веб-службой, работающей на Tomcat, которая работает на порту 8443 на том же компьютере. Я настроил proxy_pass на nginx для передачи любого запроса, полученного на / APIServer, на сервер Tomcat.

Пропуск прокси успешно отправляет запросы на / APIServer серверу Tomcat. Но проблема в том, что Tomcat предоставляет новый JSESSIONID значение для каждого запроса из веб-приложения. Каждый ответ от Tomcat содержит Set-Cookie заголовок с новым JSESSIONID пока нет Cookie заголовок, отправляемый клиентом для каждого запроса после первого.

Моя конфигурация nginx выглядит следующим образом:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html/analytics-ui;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /APIServer/ {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header Access-Control-Allow-Origin *;
        proxy_redirect off;
        proxy_pass https://127.0.0.1:8443/;
    }
}

Я добавил заголовки прокси после исследования, как решить эту проблему, но пока ни одно из решений не помогло. Tomcat по-прежнему предоставляет новые JSESSIONIDs для каждого запроса из веб-приложения. Это вызывает проблемы в веб-приложении с такими функциями, как вход в систему и авторизация.

API на сервере Tomcat работает, если я вызываю его напрямую с помощью Postman или веб-браузера.

Есть ли что-то, что я упускаю из виду, или требуется дополнительная настройка, чтобы заставить это работать?

Спасибо.

Хорошо, я неуклюжий.

Причина, по которой это не сработало, заключалась в том, что я не использовал SSL на nginx, в то время как Tomcat использовал SSL. Я установил SSL в nginx, и теперь он работает как положено.