У меня есть несколько приложений на сервере tomcar. Я использую nginx в качестве прокси, поэтому я могу получить доступ к приложению из поддомена
tomat:8080/app1 > app1.mydomain.com
tomat:8080/app2 > app2.mydomain.com
Настроил обратный прокси:
server {
listen 80;
server_name app1.mydomain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_pass http://tomcat:8080/app1/;
}
}
Я могу получить доступ к приложению без проблем. Но он не может продолжить сеанс. У меня есть еще одно приложение на пристани, которое без проблем запускается за ngix. Также, если я обращаюсь к приложению напрямую, я могу работать с ним без проблем.
Намек?
Спасибо.
Я заметил, что проблема возникает, когда путь к прокси-серверу не совпадает с именем контекста приложения Tomcat и существует несоответствие пути cookie, которое вызывает новый JSESSIONID для каждого запроса.
Попробуйте добавить директиву proxy_cookie_path, как указано ниже:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_cookie_path ~*^/.* /;
proxy_pass http://tomcat:8080/app1/;
}
Для меня ответ предоставлен Дивакар Тимилсина был тем, который решил мою проблему ..
Наличие nginx, отвечающего на корневой контекст VHost, и проксирования запросов к экземпляру Tomcat в контексте / приложении.
Например:
http://hunt.pepe.com/index.jsp --> http://localhost:8080/hunt-app
Единственная директива, которую я добавил, была [ proxy_cookie_path ~^ /. /; ]:
location / {
·
·
proxy_cookie_path ~*^/.* /;
·
proxy_pass http://localhost:8080/hunt-app;
}
Большое спасибо, чувак, ты буквально спас мне задницу.
Вы можете включить привязку сеанса или привязку сеанса. Это гарантирует, что запросы от одного и того же клиента будут передаваться одному и тому же коту каждый раз.
Изменение в nginx:
липкий cookie srv_id expires = 1h domain = .example.com path = /;
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky
Я также сталкиваюсь с той же проблемой, что не может продолжить сеанс. Сезар упомянул, что он решил проблему с apache, но я получаю то же самое даже с apache. Может кто-нибудь мне помочь. Я сделал следующую настройку.
Конфигурация DNS
subdomain.mydomain.com 10.10.10.10
Конфигурация прокси в apache на 10.10.10.10
<VirtualHost *:80>
ServerName subdomain.mydomain.com
ProxyPass / http://tomcatserverIP:8080/appname
ReverseProxyPass / http://tomcatserverIP:8080/appname
</VirtualHost>