【发布时间】: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 数据包。