在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标头的预期用法”的情况?
答案 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。
客户端必须在主机标头中提供网站的值,以允许服务器区分不同的网站。