Используя этот ответ: Как перенаправить трафик с порта 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
.
Надеюсь, это поможет ;-)