- 17, May 2024
- #1
У меня есть сервер, на котором запущен сервер Tomcat с приложением Java.
Кроме того, запустите также сервер Apache2, который работает как обратный прокси-сервер, где я установил 2 виртуальных хоста.
Код (ApacheConf): Моя проблема в том, что сеанс не сохраняется между запросами.
При каждом сеансе запроса имеется другой идентификатор.
Я проверяю это с помощью этого:
Код (разметка): я получаю к нему доступ следующим образом: mydom.com/sess, и на странице печатается идентификатор сеанса.
На первом этапе я подумал, что это проблема в моем приложении.
Но я проверил это на локальном хосте на своем ПК, и все работает.
Сессия сохраняется. Через некоторое время я обнаружил, что проблема в том, как я получаю доступ к своему приложению. Если я вставлю адресную строку https:// mydom.com/sess, сессия сохраняется. Если я поставлю только mydom.com/sess (перенаправление на https), сессия не сохраняется. Как я могу это исправить?
Кроме того, запустите также сервер Apache2, который работает как обратный прокси-сервер, где я установил 2 виртуальных хоста.
@Controller
@RequestMapping(value = "/sess")
public class TestSession{
@RequestMapping(method = RequestMethod.GET)
public void mainPage(HttpServletRequest request, HttpServletResponse response) throws IOException{
HttpSession session = request.getSession();
response.setContentType("text/html");
response.getWriter().println(session.getId());
}
}
Код (ApacheConf): Моя проблема в том, что сеанс не сохраняется между запросами.
При каждом сеансе запроса имеется другой идентификатор.
Я проверяю это с помощью этого:
#HTTP(www/non-www) -> HTTPS(non-www) <VirtualHost *:80> ServerName mydom.com ServerAlias www.mydom.com Redirect permanent / [URL='https://lumtu.com/yti/bvNNvbS9odHRwczovL215ZG9tLmt9G']https://mydom.com/[/URL] </VirtualHost> #ACTIVATE HTTPS AND REVERSE PROXY -> myapp <VirtualHost *:443> SSLEngine On SSLCertificateFile /opt/ssl/new/mydom.crt SSLCertificateKeyFile /opt/ssl/new/mydom.key SSLCertificateChainFile /opt/ssl/new/mydom.ca-bundle BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL ServerName mydom.com ServerAlias www.mydom.com ProxyRequests Off ProxyPreserveHost On ProxyPass / [URL='https://lumtu.com/yti/cAXXAcC9odHRwOi8vMTI3LjAuMC4xL215Y12L']http://127.0.0.1:8080/myapp/[/URL] ProxyPassReverse / [URL='https://lumtu.com/yti/cAXXAcC9odHRwOi8vMTI3LjAuMC4xL215Y12L']http://127.0.0.1:8080/myapp/[/URL] </VirtualHost>
Код (разметка): я получаю к нему доступ следующим образом: mydom.com/sess, и на странице печатается идентификатор сеанса.
На первом этапе я подумал, что это проблема в моем приложении.
Но я проверил это на локальном хосте на своем ПК, и все работает.
Сессия сохраняется. Через некоторое время я обнаружил, что проблема в том, как я получаю доступ к своему приложению. Если я вставлю адресную строку https:// mydom.com/sess, сессия сохраняется. Если я поставлю только mydom.com/sess (перенаправление на https), сессия не сохраняется. Как я могу это исправить?