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

Apache2 / glassfish | tomcat: перенаправление некоторых (но не всех) запросов на 80 на Glassfish на порту 8080, где находится экран администратора?

Используя этот ответ: Как перенаправить трафик с порта 80 на порт 8080 Tomcat, в то же время позволяя серверу отправлять / получать на порт 80

Я настроил свой сервер apache2 для перенаправления некоторых запросов на Glassfish на 8080:

<VirtualHost *:80>
(...)
ProxyPass /tomcat/ http://localhost:8080/
ProxyPassReverse /tomcat/ http://localhost:8080/
ProxyPass /tomcat-admin/ http://localhost:4848/
ProxyPassReverse /tomcat-admin/ http://localhost:4848/
</VirtualHost>

На http://my.server.org/tomcat/ , Я ясно вижу:

 GlassFish Server 3.1.2
Your server is now running

но http://my.server.org/tomcat-admin/ возвращает пустой экран, но я вижу исходный HTML-код страницы администратора, поэтому я полагаю, что некоторые ресурсы не могут быть загружены. Как мне это исправить?

Другой вопрос: если мое веб-приложение Java использует httpS, я должен просто добавить:

ProxyPass /tomcat-secure/ http://localhost:8443/
ProxyPassReverse /tomcat-secure/ http://localhost:8443/
</VirtualHost>

?

К сожалению, я ничего не знаю об этом apache-proxy. Однако у меня была аналогичная проблема, и мой способ решения может помочь вам решить вашу проблему.

Я полностью интегрировал tomcat в apache, используя mod-jk. Предполагая, что вы используете дистрибутив на основе Debian, просто установите libapache2-mod-jk и настройте модуль в /etc/libapache2-mod-jk/workers.properties. Вам может понадобиться что-то вроде этого:

worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13

Эти параметры определяют соединение между apache и tomcat. Я сказал коту слушать только 127.0.0.1. Но должно быть нормально настроить модуль для разговора с другим IP и / или другим портом, если вам нужна автономная установка tomcat, доступная без apache.

Следующий шаг: открыть /etc/apache2/mods-available/jk.conf и убедитесь, что apache считывает эти свойства:

JkWorkersFile /etc/libapache2-mod-jk/workers.properties

Если это будет сделано, связь между apache и tomcat должна работать. Теперь вы можете создать несколько хостов, перенаправляющих свои запросы на tomcat:

<VirtualHost *:80>
    [...]
    ServerName your.host.tld
    [...]
    RewriteEngine on
    RewriteRule ^/(.*)$ /YourContext/$1 [L,PT]
    JkMount /* ajp13_worker
    [...]
</VirtualHost>

Этот виртуальный хост будет перенаправлять каждый запрос в контекст YourContext у кота. ajp13_worker это определение воркера, настроенное ранее в /etc/libapache2-mod-jk/workers.properties (конечно, вы можете настроить несколько рабочих для разных IP-адресов / портов) и RewriteRule перезаписывает запрос, добавляя к нему префикс YourContext. Так что вам также понадобится модуль перезаписи, если он еще не включен. Включите модули и этот хост:

a2enmod jk
a2enmod rewrite
a2ensite 007-what-ever-host
service apache2 restart
service tomcat7 restart

и пойти на http://your.host.tld/abc?some=query. Надеюсь, вы получите такой же результат, как если бы вы позвонили http://your.host.tld:8080/YourContext/abc?some=query.

Надеюсь, это поможет ;-)