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

Виртуальный хост Tomcat 6 + прокси Apache 2

У меня проблема с конфигурацией Apache и Tomcat. У меня есть экземпляр Apache в качестве прокси для Tomcat. Tomcat обслуживает два виртуальных хоста. Проблема возникает, когда одна виртуальная машина Apache указывает на конкретную виртуальную машину в Tomcat. Я могу показать в своих файлах конфигурации:

/ etc / hosts:

127.0.0.1       localhost
127.0.0.1       my-pages

/etc/apache/sites-enabled/my-pages.tld:

<VirtualHost *:80>
        RewriteEngine on
        ServerAdmin webmaster@my-pages.tld
        ServerName www.my-pages.tld
        ServerAlias my-pages.tld
        ProxyPass / http://my-pages:9082/
        ProxyPassReverse / http://my-pages:9082/
        # Logs
        ErrorLog /usr/local/tomcat2/logs/error.log
        CustomLog /usr/local/tomcat2/logs/access.log common
        LogLevel debug
</VirtualHost>

<Proxy *>
  Order deny,allow
  Allow from all
  Deny from all
</Proxy>

ProxyRequests       Off
ProxyPreserveHost   Off

$ {CATALINA_HOME} /conf/server.xml

...
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444"
               URIEncoding="UTF-8" />
<Connector port="9082" proxyPort="80" proxyName="my-pages" />
...

<Host name="my-pages" appBase="my-pages"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      <Context path="" docBase="envelon-web" />
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
             prefix="my-pages_access_" suffix=".log" pattern="common" resolveHosts="false"/>
</Host>

Когда я запускаю эту конфигурацию, страницы www.my-pages.tld указывают на виртуальный хост по умолчанию в Tomcat (а не на виртуальный «my-pages»). Это довольно странно, потому что, когда я устанавливаю такую ​​же конфигурацию на моем локальном компьютере (не на сервере), она работает нормально. Также, когда я использую доменное имя в виртуальном Tomcat (my-pages.tld вместо my-pages), оно также работает (я не хочу использовать эту конфигурацию, потому что я хочу «скрыть» Tomcat извне).

Вы знаете, где я ошибаюсь или что решит эту проблему? Спасибо за любой ответ!

Матео

Я наконец решил эту проблему. Проблема заключалась в том, что ProxyPreserveHost был определен вне директива. В Apache было определено больше виртуальных хостов, и некоторые из них имели * ProxyPreserveHost On ", что повлияло на другие хосты.

я переехал ProxyPreserveHost в что решило

Вообще говоря, есть два решения:

  1. ProxyPreserveHost с mod_proxy_http
  2. mod_proxy_ajp

Любой из них отлично работает для виртуальных хостов, и выбор зависит от предпочтений или других требований, помимо того, что было здесь задано.