Мне очень трудно разобраться, что происходит с приложением Grails 2.2.5, в котором используется плагин Shiro (v.1.2.1). Это система, которая работает нормально в течение нескольких лет. Он находится за удаленным прокси-сервером nginx, который до сих пор прослушивал порты 80/443. Мы только что перенесли тестовую установку, и теперь она совместно использует сервер с установкой Apache, которая имеет эти порты, поэтому у нас nginx прослушивает порты 8070 для http и 8443 для https. В основном это работает, но есть некоторые загадочные проблемы с перенаправлениями, когда пользователь не аутентифицирован, и эти проблемы, похоже, исходят от Широ (хотя у меня возникают трудности с уверенностью).
По сути, происходит то, что, когда неаутентифицированный пользователь переходит к 'https://myapp.com:8443/admin/',, приложение Grails выдает перенаправление, которое переводит их в' https://myapp.com:8443/auth/login?targetUri=%2F', т.е. контекст удаляется. Это должно быть 'https://myapp.com:8443/admin/auth/login?targetUri=%2F', и так же на живом сервере, который использует стандартные порты (80/443). Фактически, когда я смотрю на заголовок Location в ответе, на самом деле он отвечает 'http://myapp.com:8070/auth/login?targetUri=%2F' (то есть с портом http, что не проблема, поскольку nginx обрабатывает SSL).
Поскольку мой код в AuthController.groovy на самом деле не участвует, пока не получит запрос / auth / login, эта проблема, похоже, не возникает нигде в моем коде и должна исходить от Shiro плагин. Но почему нестандартный порт вызывает эту проблему (убирает контекст)? И что еще более важно, что я могу сделать, чтобы решить это?