Перенаправить domain.com/path на другой сервер Apache

В настоящее время у меня работают 3 виртуальные машины Apache:

A) ProxyPass (Hosts Nothing)
B) Main Website
C) ZoneMinder Website

Если вы заходите на example.com, вы попадаете на веб-сайт и можете перемещаться по нему, но...

Если я вручную наберу http://example.com/zm, пытаясь получить доступ к zoneminder

Он перенаправляет http://example.com/zm в моем удаленном браузере на http://192.168.1.255:443/foo*

Кажется, я не могу правильно настроить перенаправление. Может ли кто-нибудь увидеть, что я делаю неправильно?

Конфигурации:

A) Сервер ProxyPass:

<VirtualHost *:80>
    ServerName          www.example.com
    RedirectPermanent / http://example.com
</VirtualHost>

<VirtualHost *:80>
ServerName example.com
ProxyRequests Off
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / http://192.168.1.255:80/
ProxyPassReverse / http://192.168.1.255:80/
<Location />
    Order allow,deny
    Allow from all
</Location>
</VirtualHost>

Б) Основной веб-сайт

<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/example.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>

person FreeSoftwareServers    schedule 30.12.2015    source источник


Ответы (1)


Получил работу!

Установка:

Сервер A) Сервер Apache, который обслуживает только прокси-пасс и ничего не размещает

Сервер B) Сервер Apache, на котором размещен основной домен domain.com

Сервер C) Сервер Apache, на котором размещен ZoneMinder @domain.com/zm

Конфигурация сервера А:

<VirtualHost *:80>
ServerName domain.com
Redirect / https://www.domain.com/
</VirtualHost>

<VirtualHost *:443>
ServerName www.domain.com
ProxyRequests Off
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>
SSLProxyEngine On
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
SSLEngine on
SSLCertificateFile /location of .crt
SSLCertificateKeyFile /location of .key
SSLCACertificateFile /location of .crt
ProxyPreserveHost on

ProxyPass /zm https://192.168.1.43:443/zm
ProxyPassReverse /zm https://192.168.1.43:443/zm


ProxyPass / https://192.168.1.42:443/
ProxyPassReverse / https://192.168.1.42:443/

<Location />
    Order allow,deny
    Allow from all
</Location>
</VirtualHost>

Примечания: Важно, чтобы /zm стоял перед "/", чтобы захватить все. Я также заметил, что это FAILED, если я использовал /zm/.

Конфигурация сервера Б:

<VirtualHost *:443>
ServerName www.domain.com
DocumentRoot /var/www/html
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/domain.log
CustomLog ${APACHE_LOG_DIR}/domain.log combined
SSLEngine on
SSLCertificateFile /location of .crt
SSLCertificateKeyFile /location of .key
SSLCACertificateFile /location of .crt
</VirtualHost>

Примечание: нет необходимости иметь переадресацию *:80 или псевдоним сервера, так как только правильно отформатированные запросы отправляются на этот сервер заранее через фильтрацию ProxyPass.

Конфигурация сервера C: (domain.com/zm)

<VirtualHost *:443>
ServerName www.domain.com
DocumentRoot /var/www/html
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/domain.log
CustomLog ${APACHE_LOG_DIR}/domain.log combined
SSLEngine on
SSLCertificateFile /location of .crt
SSLCertificateKeyFile /location of .key
SSLCACertificateFile /location of .crt
</VirtualHost>

Да, это то же самое. Работает, я доволен!

Примечание. На всех трех серверах установлены мои SSL-сертификаты, но я не трогал default-ssl.conf.

person FreeSoftwareServers    schedule 02.01.2016