【问题标题】:Why is routing a request based on its Host header a good way to proxy traffic?为什么基于其 Host 标头路由请求是代理流量的好方法?
【发布时间】:2020-02-01 03:19:16
【问题描述】:

在proxy documentation for Kong中提到了

根据其 Host 标头路由请求是最直接的 通过 Kong 代理流量的方式,特别是因为这是 HTTP Host 标头的预期用途

但是,要使其正常工作,来自客户端的任何传入请求现在都必须将其 Host 标头设置为特定值。一般情况下,HTTP 客户端不会有意修改这个值,那么实际中是如何使用的呢?

换句话说,客户端通常不会修改其请求中的 HTTP 主机标头,就像文档中的 curl 示例中所做的那样,例如: curl --url http://proxy.mydomain.com:8000/ --header 'Host: service.example.com'

鉴于代理旨在对客户端透明,为什么会出现“这是 HTTP 主机标头的预期用途”的情况?

【问题讨论】:

    标签: http proxy http-headers api-gateway kong


    【解决方案1】:

    如果代理对客户端是透明的,客户端通常不知道使用了代理,因此通过 DNS 解析 IP 地址。然后客户端相应地建立到该 IP 地址的 TCP 连接。

    (透明)代理现在拦截流量。 Host 标头现在是获取服务器 FQDN 的唯一机会。如果连接是 HTTPS,这很重要,因此代理可以使用 Host 标头值作为 SNI / 验证服务器的证书。

    独立于透明代理的使用,主机标头应包含服务器名称,该名称允许使用同一服务器硬件托管多个网页。

    例子:

    服务器 IP 1.2.3.4 有 4 个网站:www.a.com、www.b.com、www.c.com、www.d.com。

    客户端必须在主机头中提供网站的值,以便服务器区分不同的网站。

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 2011-08-25
      • 2017-01-14
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      相关资源
      最近更新 更多