将一个域名重定向到另一台Apache服务器,但保持URL不变

4
希望这很容易做到 - 我只是无法弄清楚!如果我在问题中使用任何术语不当,我提前道歉。我的Web服务器知识并不出色!我有两个Apache服务器在同一个域中。一个侦听端口80(我们称其为Apache1),另一个侦听端口10080(Apache2)。我想实现的是,当用户在浏览器的URL栏中输入某个特定的域地址(例如www.domain.com)时,他们将被重定向从默认服务器端口80到侦听端口10088的服务器。我已经使用Apache 1服务器的httpd.conf文件中的Redirect关键字来实现这一点,如下所示:
<VirtualHost *:80>
ServerName www.domain.com
Redirect / http://www.domain.com:10088/exampleApp
</VirtualHost>

虽然这种方法可以达到效果,但不幸的是它会在浏览器中改变URL地址显示为www.domain.com:10088/exampleApp。我需要它显示的域名与用户输入的相同-www.domain.com。

我尝试了修改ProxyPass和ReverseProxyPass,但无法使其生效。我不确定是否可以使用URL重写来解决问题。

感谢提前任何帮助。

1个回答

7

您需要使用反向代理:

如果您的两个站点都在同一台服务器上监听,则可以仅在本地主机(127.0.0.1)上代理。否则,请确保从Apache1中可以解析域名。

<VirtualHost *:80>
  ServerName www.domain.com

  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:10088/exampleApp/
  ProxyPassReverse / http://127.0.0.1:10088/exampleApp/
</VirtualHost>

明天我会尝试这个。目前我无法从家里访问服务器。您能否向我解释ProxyPreserveHost行的目的以及为什么我需要它? - mazzaC
它确保主机头保持设置。如果您的第二个Apache服务器正在进行虚拟托管,则可能需要此设置。如果第二个Apache上只有一个站点,则可能不需要。如果您不确定,最好将其设置为更安全。 - arco444
1
我在使用ProxyPreserveHost On时遇到了很多问题。我遇到了这个SO问题中提到的问题。只是留下评论给其他人。将其更改为ProxyPreserveHost Off后问题得到解决。 - shashwat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接