如何将请求从一个 apache 服务器传递到另一个

max*_*ito 7 mod-rewrite reverse-proxy mod-proxy apache-2.2

我有两个启用了 mod_proxy 的 Apache 服务器。我想知道如何使用相同的端口 (80) 从“Apache Server A”“传递请求”到“Apache Server B”。

在内部 ip 为 192.168.0.5 的“服务器 A”中,我配置了 DNS,并将其用作我的邮件服务器。

在内部 IP 为 192.168.0.10 的“服务器 B”中,我有自己的云服务器。

今天,当我访问 wwww.mydomain.com 或 www.mydomain.com/webmail 时一切正常,因为内容都在“服务器 A”中,我需要的是当有人尝试访问 owncloud.mydomain.com 时,他们可以访问我的服务器 B没有将它们重定向到另一个端口,如 owncloud.mydomain.com:81,我只想使用端口 80。

实际上我得到了一个重定向循环,因为当我尝试重定向时,我猜“服务器 A”自己得到了相同的请求。我已将我的虚拟主机设置为在同一个“服务器 A”中工作,我想要的是使用相同的端口和 URL(owncloud.mydomain.com)“重定向”到另一台服务器。

我不想使用另一个端口重定向。

slm*_*slm 13

你会想要在服务器 A 上做这样的事情:

NameVirtualHost *
<VirtualHost *>
    ServerName owncloud.mydomain.com

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://192.168.0.10:80/
    ProxyPassReverse / http://192.168.0.10:80/
    <Location />
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

根据您的应用程序,您可能需要使用以下一项或全部:

  • X-Forwarded-For - 客户端的 IP 地址。
  • X-Forwarded-Host - 客户端在 Host HTTP 请求标头中请求的原始主机。
  • X-Forwarded-Server - 代理服务器的主机名。

查看mod_proxy 文档以获取更多提示和技巧。

参考