我在服务器上有一个 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 地址。然后代理可以根据它看到的连接套接字的“本地地址”应用规则。