在 proxy documentation for Kong ,提到了
Routing a request based on its Host header is the most straightforward way to proxy traffic through Kong, especially since this is the intended usage of the HTTP Host header
但是,为了使其发挥作用,来自客户端的任何传入请求现在都必须将其 Host header 设置为特定值。一般来说,HTTP 客户端不会故意修改这个值,那么它在实际中是如何使用的呢?
换句话说,客户端通常不会像文档中的 curl
示例中那样修改请求中的 HTTP 主机 header ,例如:
curl --url http://proxy.mydomain.com:8000/--header '主机:service.example.com'
鉴于代理旨在对客户端透明,为什么会出现“这是 HTTP 主机 header 的预期用途”?
最佳答案
如果代理对客户端是透明的,则客户端通常不知道使用了代理,因此通过 DNS 解析 IP 地址。然后客户端相应地建立到该 IP 地址的 TCP 连接。
(透明)代理现在拦截流量。主机 header 现在是获取服务器 FQDN 的唯一机会。如果连接是 HTTPS,这一点很重要,因此代理可以使用主机 header 值作为 SNI/验证服务器的证书。
独立于透明代理的使用,主机 header 应包含允许使用同一服务器硬件托管多个网页的服务器名称。
示例:
服务器IP 1.2.3.4,有4个网站:www.a.com、www.b.com、www.c.com、www.d.com。
客户端必须在主机 header 中提供网站的值,以便服务器能够区分不同的网站。
关于http - 为什么基于主机 header 路由请求是代理流量的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58208382/