重定向域。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.
我目前有 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.