Я установил несколько экземпляров tomcat в Ubuntu. Я хочу указать разные URL-адреса для каждого экземпляра tomcat. Но я не могу добиться желаемого результата в случае нескольких экземпляров tomcat.
(Ниже URL-адрес просто объясняет, что я пытаюсь сделать)
Tomcat1: demo.mydomain.com/myapp: localhost: 8080 / myapp
Tomcat2: test.mydomain.com/myotherapp: localhost: 8081 / myotherapp
Изменение моих файлов конфигурации после дальнейшего поиска: я пытаюсь добиться этого через порт AJP. Итак, я сделал ниже Редактирование в своих файлах:
Tomcat1 = демонстрация
Tomcat2 = тест
демонстрация - server.xml
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
test- server.xml
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
worker.properties
worker.list=jk-status,demo,test
# Status worker for managing load balancer
worker.jk-status.type=status # setting type of jk-status' worker.
worker.demo.port=8009
worker.demo.host=localhost
worker.demo.type=ajp13
worker.test.port=8010
worker.test.host=localhost
worker.test.type=ajp13
Сайт включен в / etc / apache2 / sites-enabled
1_rewritehttp.conf
<VirtualHost *:80>
ServerName server
RewriteEngine On
RewriteRule (.*) http://server.mydomain.com%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:80>
ServerName server.mydomain.com
ServerAdmin webmaster@localhost
DocumentRoot /opt/www/
JkMount /jolokia-demo/* demo
JkMount /jolokia-test/* test
<Directory /opt/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName demo
RewriteEngine On
RewriteRule (.*) https://demo.mydomain.com%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:80>
ServerName demo.mydomain.com
RewriteEngine On
RewriteRule (.*) https://demo.mydomain.com%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:80>
ServerName test
RewriteEngine On
RewriteRule (.*) https://test.mydomain.com%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:80>
ServerName test.mydomain.com
RewriteEngine On
RewriteRule (.*) https://test.mydomain.com%{REQUEST_URI}
</VirtualHost>
3_demo.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName server.mydomain.com
DocumentRoot /opt/www/
<Directory /opt/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
JkMount /myapp/* demo
Alias /myapp/ "/opt/tomcat/demo/webapps/myapp/"
<Directory /opt/tomcat/demo/webapps/myapp/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
JkMount /manager/* demo
ErrorLog ${APACHE_LOG_DIR}/demo_error.log
CustomLog ${APACHE_LOG_DIR}/demo_access.log combined
SSLEngine on
SSLCertificateFile /usr/local/ssl/crt/public.cer
SSLCertificateKeyFile /usr/local/ssl/private/private.key
SSLCertificateChainFile /usr/local/ssl/crt/intermediate.cer
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
4_test.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName server.mydomain.com
DocumentRoot /opt/www/
<Directory /opt/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
JkMount /myotherapp/* test
Alias /myotherapp/ "/opt/tomcat/test/webapps/myotherapp/"
<Directory /opt/tomcat/test/webapps/myotherapp/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
JkMount /manager/* test
ErrorLog ${APACHE_LOG_DIR}/test_error.log
CustomLog ${APACHE_LOG_DIR}/test_access.log combined
SSLEngine on
SSLCertificateFile /usr/local/ssl/crt/public.cer
SSLCertificateKeyFile /usr/local/ssl/private/private.key
SSLCertificateChainFile /usr/local/ssl/crt/intermediate.cer
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
Теперь проблема в том, что я могу получить доступ к демонстрационному коту через URL. Если я пытаюсь получить доступ к URL-адресу test tomcat, он перенаправляется на URL-адрес демонстрационного tomcat. Я попытался получить доступ к диспетчеру обоих котов, и оба они указывают на демо-менеджер Tomcat, если я сделаю команду ниже, он перенаправит на тестовый менеджер tomcat. Я хочу различать оба экземпляра tomcat. Мне что-то здесь не хватает. Любая помощь будет оценена.
a2dissite 3_demo.conf
Ничего не могу найти нигде, поэтому спросил здесь. Не стесняйтесь предлагать- Как это сделать с нуля. Заранее спасибо.
Конфигурация вашего сервера содержит перекрывающиеся виртуальные хосты. Все ваши хозяева названы Demo.Server
и все они используют одно и то же определение IP / порта. Таким образом распознается только первый, остальные - нет.
Кроме того, ваш вопрос включает серверы Tomcat, прослушивающие порты 8080
и 8081
, которые предлагают HTTP, но у вас настроен Jk, который используется для AJP.
Предполагая, что вы используете HTTP, вы можете достичь своей цели с помощью следующей конфигурации Apache (вам не нужно mod_jk
в таком случае):
<VirtualHost *:443>
ServerName www.tomcat1.com
ProxyPass / http://localhost:8080/
SSLCertificateFile /certfiicate/for/server1.pem
</VirtualHost>
<VirtualHost *:443>
ServerName www.tomcat2.com
ProxyPass / http://localhost:8081/
SSLCertificateFile /certfiicate/for/server2.pem
</VirtualHost>
Таким образом, все ваши установленные веб-приложения на первом экземпляре Tomcat будут доступны по адресу https://www.tomcat1.com/<app_name>
, и аналогично все ваши веб-приложения на втором экземпляре Tomcat доступны по адресу https://www.tomcat2.com/<app_name>
.
Использование AJP и mod_jk
Если вы хотите использовать AJP для соединений, у вас есть два варианта. Первый - это mod_jk, то, что вы используете в настоящее время, так что это, вероятно, то, что вам нужно. Используя это, вы можете сопоставить развернутые веб-приложения с их соответствующими URL-адресами, но не можете изменить URL-адреса, то есть вы не можете сделать сопоставление, чтобы http://yourserver/thefrontend/
приведет к тому, что веб-приложение будет установлено в /thebackend
контекст.
Используя mod_jk, вы должны использовать эту конфигурацию Apache (ваш workers.properties
файл выглядит нормально):
<VirtualHost *:443>
ServerName demo.mydomain.com
JkMount /* demo
SSLCertificateFile /certfiicate/for/server1.pem
</VirtualHost>
<VirtualHost *:443>
ServerName test.mydomain.com
JkMount /* test
SSLCertificateFile /certfiicate/for/server1.pem
</VirtualHost>
Таким образом, все на demo.mydomain.com
будет проксироваться в экземпляр Tomcat с именем demo
в workers.properties
файл и все на test.mydomain.com
будет проксирован на экземпляр с именем test
. Вам не нужно указывать Directory
или Alias
для того, чтобы это работало.
Использование AJP и proxy_ajp
Другой разъем AJP, который вы можете использовать, это proxy_ajp
. Поскольку вы уже настроили mod_jk
, Я думаю, что вряд ли вы захотите использовать это вместо этого, но я записываю это для полноты картины.
Модуль Apache прокси AJP не нуждается в дополнительных файлах свойств, вы должны включить IP-адрес (или имя) серверной части в конфигурацию. Ваша конфигурация будет выглядеть так:
<VirtualHost *:443>
ServerName demo.mydomain.com
ProxyPass / ajp://localhost:8009/
SSLCertificateFile /certfiicate/for/server1.pem
</VirtualHost>
<VirtualHost *:443>
ServerName test.mydomain.com
ProxyPass / ajp://localhost:8010/
SSLCertificateFile /certfiicate/for/server1.pem
</VirtualHost>
Одно преимущество proxy_ajp
заключается в том, что с его помощью вы можете сопоставить любой контекст с любым URL-адресом. Например, чтобы отобразить /manager/
контекст для /the_great_manager/
, вы можете использовать следующую конфигурацию:
ProxyPass /the_great_manager/ ajp://localhost:8009/manager/
ProxyPassReverse /the_great_manager/ /manager/
ProxyPassReverseCookiePath /the_great_manager/ /manager/
Это может пригодиться в определенных обстоятельствах, однако, если вы используете переадресацию, подобную приведенной выше, будьте готовы к сюрпризам. Обычно рекомендуется не изменять сопоставление URL-адресов без крайней необходимости.