重定向域。com/path 到另一个 Apache 服务器

Redirect domain.com/path to another Apache Server

我目前有 3 个 Apache VM 运行:

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>

B) 主网站

<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>

成功了!

设置:

服务器 A) 仅提供 proxypass 且不托管任何内容的 Apache 服务器

服务器 B) 托管主要 domain.com

的 Apache 服务器

服务器 C) 托管 ZoneMinder @ 域的 Apache 服务器。com/zm

服务器 A 配置:

<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 放在“/”之前是很重要的。我也注意到如果我使用 /zm/.

服务器 B 配置:

<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 配置:(域。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>

是的,是一样的。有用所以我很开心!

注意:所有 3 个服务器都安装了我的 SSL 证书,但我没有接触 default-ssl.conf.