У меня есть несколько установок Tomcat, на которых установлено только одно основное приложение (в дополнение к таким вещам, как Manager). Есть ли лучший способ, кроме изменения домашней страницы Tomcat по умолчанию для включения перенаправления в приложение? Или, лучше, как я могу нанести на карту http://domain.com:8080/app чтобы просто http://domain.com:8080 а другие приложения (например, Manager) оставить в покое?
Установите приложение, чтобы стать ROOT
контекст.
Это можно сделать:
ROOT.war
, webapps/ROOT
каталог"/"
через диспетчер Tomcat,<Context path="/" docBase="${catalina.home}/webapps/app"/>
Я почти всегда ставлю Apache перед Tomcat и подключаюсь через AJP (либо mod_proxy_ajp, либо mod_jk), потому что Tomcat невероятно неэффективен при обслуживании статического контента и из-за конкретной проблемы, которую вы описываете. Кроме того, прикрепив внешний интерфейс, вы можете защитить / manager и любые другие приложения с правилами перезаписи. / manager также является частым источником атак, и этот метод не позволяет внешнему миру полностью добраться до него.
Чтобы создать перенаправление, как вы описываете, создайте правило перезаписи с эффектом:
# if the URL doesn't go to /myapp /admin /jkstatus /server-status or /awstats, redirect to /myapp
RewriteCond %{REQUEST_URI} !^/myapp
RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_URI} !^/jkstatus
RewriteCond %{REQUEST_URI} !^/server-status
RewriteCond %{REQUEST_URI} !^/awstats
RewriteRule .* /myapp [R,L]
Я уверен, что что-то подобное можно сделать на уровне Tomcat, но я предпочитаю сохранять Tomcat переносимым и простым и создавать любые подобные правила на уровне Apache.
Если вы это сделаете, не забудьте JkUnmount или исключите через proxy_ajp ваш статический контент, чтобы он обслуживался из Apache.