Я разработал три веб-приложения на основе Spring, которые были развернуты на моем сервере Tomcat 8. Я могу получить к ним доступ в локальной сети через доступ как:
http://localhost:8080/webapps1
http://localhost:8080/webapps2
http://localhost:8080/webapps3
что отлично работает для меня.
Коннектор Tomcat AJP был настроен как:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Теперь я попытался опубликовать все три приложения в Интернете, используя конфигурацию прокси-сервера apache 2.4 через коннектор AJP.
У меня также было зарегистрировано три FQDN, например:
www.thss.domain1.com.au
www.stoa.domain2.com.au
ozssc.stoa.domain2.com.au
Я протестировал эти три FQDN с помощью check-host.net, все они работают нормально.
Теперь я настрою свой apache 2.4, используя параметр виртуального хоста прокси, настрою имя файла как: apache-serviceproxy.conf в / Library / Server / Web / Config / Proxy.
......
listen 10.0.1.100:80
......
<VirtualHost 10.0.1.100:80>
ProxyPreserveHost On
ServerName www.thss.domain1.com.au
ServerAlias thss.domain1.com.au
ServerAdmin [email protected]
ProxyPass / ajp://127.0.0.1:8009/webapps1/
ProxyPassReverse / ajp://127.0.0.1:8009/webapps1/
</VirtualHost>
<VirtualHost 10.0.1.100:80>
ProxyPreserveHost On
ServerName www.stoa.domain2.com.au
ServerAlias stoa.domain2.com.au
ServerAdmin [email protected]
ProxyPass / ajp://127.0.0.1:8009/webapps2/
ProxyPassReverse / ajp://127.0.0.1:8009/webapps2/
</VirtualHost>
<VirtualHost 10.0.1.100:80>
ProxyPreserveHost On
ServerName ozssc.stoa.domain2.com.au
ServerAdmin [email protected]
ProxyPass / ajp://127.0.0.1:8009/webapps3/
ProxyPassReverse / ajp://127.0.0.1:8009/webapps3/
</VirtualHost>
Обратите внимание: полное доменное имя 2 и 3 работает в одном домене (domain2.com.au), а полное доменное имя 1 - в другом домене (domain1.com.au).
Я тестировал через Интернет, используя net renderer.com, полное доменное имя 1 www.thss.domain1.com.au работает прекрасно, но полное доменное имя 2 и 3 не работает должным образом, я проверял свой журнал доступа tomcat и обнаружил, что кое-что очень интересно.
детали как:
Когда я получаю доступ к своему первому полному доменному имени (www.thss.domain1.com.au) из Интернета, запрос проходит через: Router -> Apache 2.4 (порт 80) -> AJP connector (8009) -> Tomcat 8.0.28 успешно, все страницы работает хорошо.
Журнал доступа Tomcat показывает:
58.106.1.75 - - [01/Nov/2015:09:37:40 +1100] "GET /webapps1/ HTTP/1.1" 200 2616
58.106.1.75 - - [01/Nov/2015:09:37:40 +1100] "GET /webapps1/css/thss_layout.css HTTP/1.1" 200 1405
58.106.1.75 - - [01/Nov/2015:09:37:40 +1100] "GET /webapps1/js/dojo-release-1.8.6/dojo/dojo.js HTTP/1.1" 200 158637
Это означает, что запрос html, включая запрос файла css / js, использует единый путь контекста / webapps1, что идеально.
Но когда я запрашиваю свое полное доменное имя 2 (www.stoa.domain2.com.au) и 3 (ozssc.stoa.domain2.com.au), только первый запрос приходит с правильным контекстным путем, таким как: / webapps2 любой следующий запрос на включая css и js или файл изображения - это двойной путь контекста, например: / webapps2 / webapps2, так как это плохо отформатированный путь контекста, ошибка 404 ответа Tomcat. В результате: все страницы с полными доменными именами 2 и 3 без поддержки css / js / image отображают только некоторый простой текст.
Журнал доступа показывает:
148.251.45.185 - - [01/Nov/2015:08:58:59 +1100] "GET /webapps2/ HTTP/1.1" 200 19098
148.251.45.185 - - [01/Nov/2015:08:59:00 +1100] "GET /webapps2/webapps2/dojo-release-1.10.4/dijit/themes/claro/claro.css HTTP/1.1" 404 1158
148.251.45.185 - - [01/Nov/2015:08:59:01 +1100] "GET /webapps2/webapps2/css/style.css HTTP/1.1" 404 1088
148.251.45.185 - - [01/Nov/2015:08:59:02 +1100] "GET /webapps2/webapps2/images/icons/search33.png HTTP/1.1" 404 1112
Мои вопросы: как я могу настроить свой прокси с помощью AJP, не добавляя этот дублированный контекстный путь перед запросом от apache 2.4 к tomcat через коннектор AJP?
Любые советы приветствуются!
Хороших выходных! Приятель