【问题标题】:How to directly connect server behind reverse proxy with client如何直接将反向代理后面的服务器与客户端连接
【发布时间】:2015-07-23 11:51:13
【问题描述】:

这个问题与 Apache,mod_proxy 有关。

我有一个外部 IP=X、内部 IP=10.0.0.1 的站点,由 Apache 提供支持,可用作图像的反向代理:

ProxyPassMatch *.\.(jpg|gif|png) http://10.0.0.2/handle_image.php

当 IP=Y 的客户端连接到 IP=X 请求 logo.jpg 时,10.0.0.1 上的 Apache 连接到 10.0.0.2 并从中检索图像;然后它将图像发送到 Y 上的客户端。这意味着图像数据通过 10.0.0.1。

我希望 Y 上的客户端直接从 10.0.0.2 获取数据,同时保持与 X 的连接;即客户端认为它从 X 获取数据,但实际上从 10.0.0.1 抽取图像,因此 X 处的服务器网络不会被图像传输加载。

据我了解,这应该是服务器在 X 和 Y 之间连接的 10.0.0.2 处劫持 TCP 会话。

我该怎么做?

编辑 为了让我更清楚,我添加了一个图形。

【问题讨论】:

    标签: apache proxy reverse


    【解决方案1】:

    您描述的实际方法不适用于浏览器。您无法启动从后端浏览器的连接,它必须从浏览器到后端。

    您可以做的是使用 websockets 通过代理创建从后端到客户端的全双工连接。因此,后端可以不断地将新内容推送到浏览器,但它会通过代理,该代理只是将其从后端以原始形式传送到浏览器。

    使用 httpd (Apache),这可以通过使用 mod_proxy_wstunnel 或者,您可以使用 mod_lua 实现此目的,但这是另一回事。

    【讨论】:

    • 这是使用 ARP 的特定网络设置。您必须拥有对主机核心网络的管理访问权限才能进行设置。不能单独通过 httpd 完成。
    • 我是根用户。除了 LVS Direct 路由还有其他解决方案吗?
    • root 是不够的,您必须有权访问物理路由器才能进行设置。如果您无权更改实际的网络设置,那么不,您不能像您想要的那样解决它。响应必须通过代理服务器。如果您确实可以访问路由设置,那么您应该在适当的渠道中询问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 2012-05-02
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多