我在端口 80 上为两个站点运行一个 Apache 服务器。假设域名为 ,example.com
我还有另一个域名example2.com
。当用户访问 时example.com
,我希望它提供那些文件(因此是虚拟主机),但是当有人尝试访问该域名example2.com
(位于同一 IP 地址上)时,我希望它重定向到端口 90 上的另一个 IP 地址,而访问者不知道他位于不同的端口上。
我怎样才能实现这个目标?
<VirtualHost example.com:80>
DocumentRoot {rootdir}
ServerName example.com
ServerAlias example.com
</VirtualHost>
<VirtualHost *:80>
NoProxy .example.com
ProxyPreserveHost On
ProxyRequests Off
ServerName *
ProxyPass / http://server2:90
ProxyPassReverse / http://server2:90
</VirtualHost>
这不起作用并且它example.com
也会尝试使用代理,有人知道为什么吗?
答案1
您确定要重定向用户吗?据我了解,您希望服务器 example2.com 代理到其他地方。您可以使用以下方式将 Apache 设置为代理mod_proxy。您还可以为特定的 VirtualHost 定义此代理,请参阅 Apache 的VirtualHost 示例。
例如这样的事情应该可以工作:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example.com
<VirtualHost>
<VirtualHost *:80>
ServerName example2.com
ProxyPass / http://server2:90/
ProxyPassReverse / http://server2:90/
ProxyPreserveHost On
ProxyRequests Off
<VirtualHost>
还要确保 mod_proxy 已加载
LoadModule proxy_module modules/mod_proxy.so