#tomcat #mod-proxy
Вопрос:
Я перенаправляю запросы с Apache на Tomcat.
<Server>
<Service>
<Connector port="8222" protocol="HTTP/1.1" proxyPort="80" />
<Engine name="Catalina" defaultHost="www.AAA.com">
<Host name="www.AAA.com">
<Context path="/path" docBase="aaa"></Context>
</Host>
<Host name="www.BBB.com">
<Context path="/path" docBase="bbb"></Context>
</Host>
</Engine>
</Service>
</Server>
Запросы через Apache — работают только для домена, заданного в атрибуте defaultHost элемента Engine.
Если я установлю defaultHost для домена BBB, то будут работать URL-адреса второго хоста.
Это почти так же, как если бы Tomcat не получал исходное доменное имя и не мог определить целевой домен и, следовательно, использовал значение по умолчанию.
Я пересылаю запросы через Apache mod_proxy, и запросы принимаются в зависимости от того, как я установил defaultHost.
Это моя прокси-команда
ProxyPass /path http://localhost:8222/path
ProxyPassReverse /path http://localhost:8222/path
Я проверил журналы доступа, и запросы (даже нерабочие) поступают в Tomcat.
Я проверил заголовки x-переадресованного хоста и x-переадресованного сервера, полученные Tomcat, и они верны с » www » и без соответственно…вместе с используемым доменным именем.
Я бы подумал, что Tomcat должен быть в состоянии найти нужного хоста с этой информацией.
Ответ №1:
То, что вы ищете, — это ProxyPreserveHost
директива, которая использует Host
заголовок исходного запроса в запросах на прокси-серверы:
ProxyPreserveHost On
При конфигурации по умолчанию Host
заголовок устанавливается в соответствии с тем, что написано в ProxyPass
директиве. В вашем случае это localhost
так, и поскольку Tomcat не имеет Host
такого имени, запрос перенаправляется на хост по умолчанию.
Примечание: в вашем случае было бы проще использовать mod_proxy_ajp
и открывать разъем AJP на Tomcat. Используя AJP, Tomcat получит (по умолчанию) всю информацию (IP-адрес, имя хоста, порт сервера, используемый протокол и т. Д.) Исходного запроса, Тогда как при использовании HTTP вам понадобится что-то вроде RemoteIpValve
Tomcat для получения этой информации.
Комментарии:
1. Большое спасибо!