В настоящее время я разрабатываю приложение с Spring и Shiro. Я развертываю Tomcat 7, и в производстве я использую nginx в качестве обратного прокси. Все работает плавно (хорошо), за исключением того, что jsessionid
добавляется к каждому URL при доступе к приложению через прокси nginx.Shiro, Spring приложение, добавляющее jsessionid для каждого URL
Когда я использую следующие Nginx конфигурации:
server {
server_name example.com www.example.com;
listen 80;
location /myapp {
proxy_pass http://localhost:8080;
}
}
я получить доступ к приложению через www.example.com/myapp, все нормально, то - в URL
jsessionid
нет Когда я использую следующие конфигурации :
server {
server_name sub.example.com www.sub.example.com
listen 80;
location/{
proxy_pass http://localhost:8080/myapp/;
}
я получить доступ к приложению через www.sub.example.com, а затем я вижу jsessionid
добавляется к каждому URL (даже после успешного входа в систему).
я нашел подобную нить, которая посоветовала добавить следующее в web.xml:
<session-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
Это работает - хорошо, jsessionid
удаляется, но я не могу аутентифицировать, что заставляет меня думать, что есть конфигурация печенья проблема в nginx, любые советы?
EDIT //: Найдено решение, просто нужно добавить следующее в Nginx конфигурации:
proxy_cookie_path /myapp/ /;
Вы подтвердили, что это проблема с печеньем? Вы можете аутентифицироваться при доступе к tomcat непосредственно на производстве? Также проверьте значение cookie в веб-браузере (используя консоль хром или что-то еще), устанавливается ли это значение и не меняется ли значение? – Wouter
Я могу проверить подлинность без проблем при непосредственном доступе к tomcat. Даже доступ к первой конфигурации nginx работает. – Stugal