【问题标题】:How does one enable the http CONNECT request on Apache?如何在 Apache 上启用 http CONNECT 请求?
【发布时间】:2018-10-10 22:40:01
【问题描述】:

我在我的 Apache Web 服务器上尝试了以下操作:

CONNECT www.example.com:443 HTTP/1.1
host: www.example.com:443
content-length: 0

example.com 不是我在该服务器上的网站,它是代理隧道的目标。我收到了 400 Bad Request 作为回应。所以显然 CONNECT 请求被禁用。如果是这样,我该如何启用它?

编辑:我做了一个 OPTIONS 请求并得到了答案

Allow: GET,HEAD,POST,OPTIONS

因此,这确认 CONNECT 已禁用。

Edit2:好的,所以我说得不够清楚,请参阅下面 Mukesh 的回答。我的 Apache Web 服务器旨在用作转发代理服务器,但仅用于隧道 TLS 流量。目标站点 example.com 位于另一台服务器上。我的 Apache 服务器需要处理 CONNECT 请求。

【问题讨论】:

  • @Quentin 感谢您的链接,但这很复杂,我想解释一下它是如何工作的。我不能以某种方式简单地启用 CONNECT 方法吗?我是否必须加载并启用特殊模块来处理此类请求?
  • 是的,这很复杂。不,不是“简单地”。是的。 (我不知道你为什么要首先使用 Apache HTTPD 作为转发代理,有一些代理服务器被设计为转发代理作为它们的核心功能)。
  • @Quentin 这不是我的电脑。如果是这样,我会抛弃 Apache 并安装我自己定制的隧道程序。但事实上,我什至不敢乞求网站管理员影响该链接的更改。你知道一个现成的隧道模拟脚本吗?如果您明白我的意思,我正在考虑在持久连接上使用 http 进行隧道传输。
  • 我没有得到你真正想要的东西,这个 apache 在哪里符合你的要求。您正在解决什么具体的用例。如果您通过持久连接查看 http 流量的隧道,那么您可以通过 websockets 来实现。通过 websocket 传递你的 http 数据包。

标签: apache http proxy


【解决方案1】:

Afaik CONNECT 请求由浏览器发送到中间代理服务器,而不是直接发送到 Web 服务器。这样,一旦收到连接请求,PROXY 就可以在网络服务器和浏览器之间创建直接双工链接。

【讨论】:

  • 正如@Quentin 提到的为什么要使用 apache httpd 作为 https 代理。有为该特定用例设计的代理服务器。为什么您特别想为此使用 Apache?
  • 见上面我对昆汀的回答。
猜你喜欢
  • 2020-01-04
  • 2014-11-09
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2014-06-15
  • 1970-01-01
相关资源
最近更新 更多