为什么基于主机标头路由请求是代理流量的好方法?

时间:2019-10-02 19:44:54

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

proxy documentation for Kong中,提到

  

基于主机标头路由请求是最简单的   通过Kong代理流量的方法,尤其是因为这是   HTTP Host标头的预期用途

但是,要使其正常工作,来自客户端的任何传入请求现在必须将其Host标头设置为特定值。通常,HTTP客户端不会有意修改此值,因此在实践中如何使用它?

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

示例:

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

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