Я запускаю приложение Spring на удаленном сервере, где установлен сервер Tomcat, который дает доступ к моему приложению через https://mydom.com:8080/myapp.
Чтобы сделать мое приложение доступным через https://mydom.com, я установил Apache и настроил его как обратный прокси.
Это конфигурация:
<VirtualHost _default_:443>
SSLEngine On
SSLCertificateFile /opt/ssl/mydom_com.crt
SSLCertificateKeyFile /opt/ssl/mydom_com.key
SSLCertificateChainFile /opt/ssl/mydom_com.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
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/myapp/
ProxyPassReverse / http://127.0.0.1:8080/myapp/
ProxyPassReverseCookiePath /myapp /
</VirtualHost>
Теперь я пытаюсь использовать ${pageContext.request.contextPath} в своих jsp файлах, чтобы получить правильные ссылки и пути к ресурсам.
Когда я запускаю из IDE, он возвращает /myapp, и это хорошо.
При запуске mydom.com возвращается /myapp, что нехорошо. Мне нужно получить пустую строку или /.
Как я могу настроить, чтобы получить правильное значение для ${pageContext.request.contextPath}?
мое приложение от tomcat, которое запускается через https://mydom.com:8080/myapp. Но я сделал это с apache. Моя проблема в ${pageContext.request.contextPath}. На mydom.com он возвращает /myapp, который является contextPath от tomcat: https://mydom.com:8080/myapp. В mydom.com я хочу, чтобы ${pageContext.request.contextPath} было равно '/' или ''(empty string).




Измените сопоставление с:
ProxyPass / http://127.0.0.1:8080/myapp/
ProxyPassReverse / http://127.0.0.1:8080/myapp/
ProxyPassReverseCookiePath /myapp /
к:
ProxyPass /myapp/ http://127.0.0.1:8080/myapp/
ProxyPassReverse /myapp/ http://127.0.0.1:8080/myapp/
И все ваши проблемы будут решены.
Попытка переписать контекстные пути в проксировании — причина №1 безумия администраторов Tomcat. Просто не делай этого.
Если вы хотите, чтобы ваше приложение было доступно на /, выполните одно из следующих действий:
/ на /myapp/ и используйте мое переписанное сопоставление выше./myapp/ на / на стороне Tomcat и исправьте отображение на карту / -> /Любая другая конфигурация будет бесконечным циклом лейкопластырей, исправлений и лейкопластырей, которые вам придется применять.
Спасибо. Первый вариант для меня исключен. Я хочу, чтобы мой сайт был доступен через mydom.com, а не mydom.com/myapp. Поэтому я выбрал второй вариант. Я переименовал свое приложение ROOT.war и скопировал в папку webapps. Есть ли другой способ сделать это или только ROOT.war единственный способ?
У вас есть несколько вариантов, но ROOT.war — самый простой способ.
к чему вы хотите получить доступ через этот URL
mydom.com?