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

Несколько служб Tomcat на порту 80

У меня есть сервер Tomcat, на котором я хочу запускать несколько веб-приложений с разными доменными именами. Учитывая конфигурацию ниже, я хочу иметь возможность подключиться к http://webapp1 и перейдите в его веб-приложение и http://webapp2 и доберитесь до этого.

В настоящее время, когда я запускаю tomcat с этой конфигурацией, он жалуется на несколько привязок к порту 80 (что, как я думал, не будет проблемой для разных доменов), и когда я пытаюсь получить доступ к любому из них, независимо от домена, который я вхожу, я получаю первое веб-приложение.

Как мне заставить это работать так, как я задумал?

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="SERVICE_WEBAPP1">
    <Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="443"
               compression="on"
           address="webapp1" />
    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               ciphers="SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, 
            TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, 
            SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, 
            SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"
           keystoreFile="KEYSTOREFILE1"
               keystorePass="keypass1"
           keystoreType="PKCS12"
           useIPVHosts="true"
           address="webapp1" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
    <Engine name="SERVICE_WEBAPP1" defaultHost="webapp1" >
      <Host name="webapp1"  appBase="webapp1dir"
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
      </Host>   
    </Engine>
  </Service>
  <Service name="SERVICE_WEBAPP2">
    <Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="443"
               compression="on"
           address="webapp2" />
    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               ciphers="SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, 
            TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, 
            SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, 
            SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"
           keystoreFile="KEYSTOREFILE2"
               keystorePass="keypass2"
           useIPVHosts="true"
           address="webapp2" />
    <Engine name="SERVICE_WEBAPP2" defaultHost="webapp2" >
      <Host name="webapp2"  appBase="webapp2dir"
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>
</Server>

Ваше чтение документы. Да, это может быть НАСТОЛЬКО просто.

Прокси-сервер с Apache, используя виртуальные хосты на основе имен.

Используйте mod_proxy_ajp для подключения Apache к Tomcat и просто настройте коннекторы AJP, а не коннекторы HTTP в Tomcat.