我的期望可能不正确,但我认为在将 Apache 实例配置为反向代理后会看到以下行为:
- 我访问了 server1:9089,它运行反向代理规则将请求转发到 Server8:80
- 我的请求被重定向到提供内容的 Server8:80
- 我的浏览器应该显示我仍“位于” server1:80,而不是 Server8:80
我没有看到这个。重定向后,我被定向到的机器的主机名显示在浏览器的地址栏中。(并且在重定向期间显示在浏览器的状态栏中)
我认为反向代理的“优点”之一是它向用户隐藏了执行繁重工作的机器(在本例中为 Server8)?
以下是(我认为)我的 httpd.conf 的相关部分:
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
localhost:9089
#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
AllowOverride none
Require all denied
</Directory>
#####PROXY
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://server8/
ProxyPassReverse / http://server8/
有人能让我感受一下我在这里做错了什么吗?还是我不了解反向代理能为我做什么和不能为我做什么的更基本的东西?
非常感谢!
答案1
此处显示的配置是正确的。实际发生的情况是后端服务器重定向到登录页面(根据 OP 的进一步评论),该页面使用服务器的主机名作为 URL。
如果不知道使用了哪种后端服务器技术,我就无法说出如何解决这个问题,但改变这种行为将解决问题。
Apache 的代理不会更改此配置中的重定向 URL。