У меня проблема с правильным подключением дополнительных виртуальных хостов к прокси с помощью Apache / Tomcat. По сути, у меня есть первичный виртуальный сайт, прокси-сервер для Tomcat, и он отлично работает. Однако дополнительные виртуальные хосты, которые я настраиваю, не работают. Все они возвращаются к исходному сайту. Это первый раз, когда я настраиваю это, поэтому я, очевидно, делаю что-то [возможно, простое], что вызывает проблему.
<VirtualHost *:80>
ServerAdmin webmaster@secondary_domain.com
ServerName secondary_domain.com
ServerAlias www.secondary_domain.com
ProxyPreserveHost On
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
DocumentRoot /var/www/secondary_domain.com
DirectoryIndex index.jsp
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/secondary_domain.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/www/secondary_domain.com/logs/error.log
LogLevel warn
CustomLog /var/www/secondary_domain.com/logs/access.log combined
<IfModule mpm_itk_module>
AssignUserId user userg
</IfModule>
и вот файл tomcat server.xml
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
<!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
<!-- See proxy documentation for more information about using this. -->
<!--
<Connector port="8082"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />
-->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host). -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost">
<Host name="primary_domain.com" appBase="/var/www/primary_domain.com"/>
<Host name="secondary_domain.com" appBase="/var/www/secondary_domain.com">
<alias>www.secondary_domain.com</alias>
</Host>
Трудно предположить, основываясь только на конфигурации одного виртуального хоста, но есть несколько вероятных причин:
Убедитесь, что ваш <VirtualHost>
спецификации соответствуют вашим NameVirtualHost
директива.
Например, у вас, вероятно, есть NameVirtualHost *:80
, поэтому ваши новые хосты должны быть настроены как <VirtualHost *:80>
, с соответствующими ServerName
/ServerAlias
конфиги, чтобы получать к ним запросы.
Чтобы убедиться, что у Tomcat есть информация, которую нужно отправить в разные appBase
для разных имен хостов вам необходимо убедиться, что ProxyPreserveHost
включен для всех ваших сайтов.