Apache / Tomcat / Railo: настройка двух сайтов с одним доменом, но с двумя разными портами

Я успешно настроил Railo с Tomcat и Apache для веб-сайта на 80-м порту. Однако я изо всех сил пытаюсь настроить другой, который использует тот же домен, но порт, отличный от 80.

У меня есть второй сайт, настроенный на порт 9080, с сертификатом SSL и базовой аутентификацией. Я могу получить к нему доступ и получить сертификат SSL и запрос аутентификации, но как только я прохожу через это, Railo выводит страницу по умолчанию (расположенную по адресу /opt/railo/tomcat/webapps/ROOT/index.cfm).

Как будто Tomcat не получает от Apache имя сервера для второго сайта, поэтому Рейло знает, какую базу документов использовать. Это потому, что я пытаюсь использовать тот же домен? Нужно ли указывать порт 9080 где-нибудь в конфигурации Tomcat?

Я вставил свою конфигурацию ниже. Любая помощь очень ценится.

Apache:

<VirtualHost *:80>
  ServerName sitename
  ServerAlias domainname
  DirectoryIndex index.cfm index.html index.htm

  DocumentRoot "/web/sitename"
  <Directory "/web/sitename">
    allow from all
    Options +Indexes
  </Directory>
</VirtualHost>

Listen 9080
<VirtualHost *:9080>
  ServerName sitename2
  ServerAlias domainname
  DirectoryIndex index.cfm index.html index.htm
  SSLEngine on
  SSLCertificateFile    /web/ssl/server.crt
  SSLCertificateKeyFile /web/ssl/server.key

  DocumentRoot "/web/sitename2
  <Directory "/web/sitename2">
    allow from all
    Options -Indexes
    AuthName .. basic auth settings ..
  </Directory>
</VirtualHost>

Tomcat (server.xml):

<Host name="sitename" appBase="webapps">
    <Context path="" docBase="/web/sitename" />
</Host>

<Host name="sitename2" appBase="webapps">
    <Context path="" docBase="/web/sitename2" />
</Host>

person Grant    schedule 11.02.2012    source источник
comment
Как вы подключили Apache к Tomcat? Я не вижу никакой AJP или другой информации о том, как вы настраиваете Apache для прокси-запросов и передаете их Tomcat. Можете ли вы включить соответствующую конфигурацию из Apache?   -  person Sean Coyne    schedule 12.02.2012


Ответы (1)


Проблема здесь в конфигурации Tomcat. У вас не может быть двух хостов с одним и тем же "именем сайта". Одно будет преобладать над другим. В идеале вы могли бы заставить Tomcat прослушивать несколько портов, как и в случае с Apache, но Coyote (веб-сервер Tomcat) не так продвинут, как Apache, с точки зрения такой функциональности. Большинство рекомендаций, которые я видел относительно запуска Tomcat на нескольких портах, предполагают запуск отдельных экземпляров Tomcat на одном компьютере, так что я бы рекомендовал это и вам, поскольку, похоже, это общепринято.

Если вы установили второй экземпляр Tomcat и установили на нем Railo, вы можете настроить Apache для передачи запросов, поступающих на ваш второй виртуальный хост, второму экземпляру Tomcat. Например, у вас может быть второй экземпляр Tomcat, который прослушивает его с помощью прослушивателя AJP на порт 9009 вместо 8009, а затем настраивает виртуальный хост Apache на прокси-запросы на порт 9009, таким образом затрагивая ваш второй экземпляр Tomcat.

Затем во втором экземпляре вы можете создать те же записи хоста, но с другим атрибутом docbase.

Например:

<VirtualHost *:80>
  ServerName sitename
  ServerAlias domainname
  DirectoryIndex index.cfm index.html index.htm

  DocumentRoot "/web/sitename"
  <Directory "/web/sitename">
    allow from all
    Options +Indexes
  </Directory>
  <Proxy *>
  Allow from 127.0.0.1
  </Proxy>
  ProxyPreserveHost On
  ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:8009/$1$2
</VirtualHost>

Listen 9080
<VirtualHost *:9080>
  ServerName sitename2
  ServerAlias domainname
  DirectoryIndex index.cfm index.html index.htm
  SSLEngine on
  SSLCertificateFile    /web/ssl/server.crt
  SSLCertificateKeyFile /web/ssl/server.key

  DocumentRoot "/web/sitename2
  <Directory "/web/sitename2">
    allow from all
    Options -Indexes
    AuthName .. basic auth settings ..
  </Directory>
  <Proxy *>
  Allow from 127.0.0.1
  </Proxy>
  ProxyPreserveHost On
  ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:9009/$1$2
</VirtualHost>

Это непростой ответ на то, что вы делаете, но он достигнет вашей цели.

-Иордания

person Jordan    schedule 16.02.2012