Назад | Перейти на главную страницу

Индексная страница Tomcat, отображаемая на сайте при просмотре по IP

У меня есть сервер Tomcat 5.0.27-2 (я знаю ... старый) и сервер Apache 2.0.46-77, работающий и обслуживающий приложения в настоящее время. Проблема, с которой мы столкнулись, заключается в том, что если я перейду на http://www.mysite.com/index.jsp, Я вижу ожидаемый JSP. Однако, если я перейду к (разбитому для целей публикации) http: // 1.2.3.4 /index.jsp (внешний IP-адрес сайта, преобразованный через NAT к 192.168.0.20), я увижу по умолчанию "Tomcat welcome" jsp. Еще один лакомый кусочек: если я перейду на http: // 192.168.0.20 /index.jsp, я увижу правильный сайт. Я вижу страницу tomcat только при прохождении через NAT. Я уверен, что это что-то в server.xml или web.xml, но я не знаю что.

Прежде чем вы скажете «Обновите свой кот», я знаю, что нам нужно это сделать, но это решение немедленной проблемы, и у нас нет времени для миграции и тщательного тестирования. В конце концов, мы обновимся до Tomcat6, но не сегодня.

Мы размещаем на сервере несколько сайтов, но для этого сайта server.xml содержит следующее:

<Host name="mysite.net" appBase="/mysite_root/ROOT" >
   <Alias>1.2.3.4</Alias>
   <Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>

<Host name="www.mysite.net" appBase="/mysite_root/ROOT" >
   <Alias>1.2.3.4</Alias>
   <Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>

<Host name="mysite.com" appBase="/mysite_root/ROOT" >
   <Alias>1.2.3.4</Alias>
   <Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>

<Host name="www.mysite.com" appBase="/mysite_root/ROOT" >
   <Alias>1.2.3.4</Alias>
   <Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>

Вы можете установить правило перезаписи в apache, которое перенаправляет все запросы, которые не начинаются с http://www.mysite.com к http://www.mysite.com.

Вероятно, он настроен для хостинга на основе имени ... есть ли в server.xml тег Host с атрибутом appBase? Если да, проверьте, что он установлен и что по умолчанию.

Это может произойти, если Tomcat отвечает на IP-адрес самого хоста, а не на 127.0.0.1.

Если вы хотите, чтобы Apache действовал как ваш передняя дверь и проксировать все запросы на Tomcat, тогда вы должны привязать Tomcat к localhost, а не к IP-адресу хоста. Тогда вы можете использовать mod_proxy для пересылки запросов, и никто не должен напрямую попадать в Tomcat. Это хорошо описано в документации Apache и довольно распространен, так что переключиться не должно быть слишком сложно.