使用 CONNECT 命令在单个 IP 上建立多个子域

使用 CONNECT 命令在单个 IP 上建立多个子域

我在服务器上有一个 HTTP 代理应用程序,它将根据客户端用于连接到代理的子域路由不同客户端的请求。代理本身是一个 HTTP 代理,它将中继 HTTPS 请求,因此使用连接命令。

假设客户端使用此域连接到代理:客户端-1.example.com

1)它们向代理发送 CONNECT 行以启动与远程目标的连接:主机托管

CONNECT host.com:22 HTTP/1.1
Proxy-Authorization: Basic encoded-credentials

2)代理回复:

HTTP/1.1 200 OK

3) 客户端开始发送 HTTPS 数据的加密部分,代理将简单转发该数据。

我的问题是,在整个方案中,我将如何读取用于连接代理的子域:客户端-1.example.com

我使用带有 **.example.com* 的通配符 DNS,它将把所有子域解析为单个 IP。我需要获取使用的子域,以便我的代理可以应用一些自定义路由规则。

答案1

我将如何读取用于连接代理的子域名:client-1.example.com?

你不会。正如你所见,代理名称不包含在客户端发送的请求中。

我需要获取使用的子域,以便我的代理可以应用一些自定义路由规则。

您必须根据其他内容来应用规则。

  • 例如,在你的用户名(代理授权),这样“someuser@client1”获得一组规则,而“someuser@client2”获得另一组规则。

  • 或者,给多个 IP 地址到代理服务器,这样每个域都有唯一的 IP 地址。然后代理可以根据它看到的连接套接字的“本地地址”应用规则。

相关内容