本文将介绍如何配置后端服务Host域名头,以及在API网关中后端服务Host域名头的优先级。
Host概述
当后端服务器同一个IP上存在多个Web应用程序(站点)时,就需要配置Host域名头,Host域名头可以指定API网关要访问的后端服务。常见应用场景如下:
API网关后端服务配置的是VPC类型,并且VPC资源内有多个站点时,需要通过Host头指定请求应该发到哪个应用程序(站点)上。
1. 分组开启透传Host
可以在分组详情中设置透传HOST头(域名头),开启后API网关会将请求域名透传至后端,如果后端地址是域名+端口,Host头也将会被请求域名覆盖;若没有开启,后端收到的是用户在API网关填写的后端HOST。
2. API定义配置Host常量参数
创建API时在定义后端服务页面的常量参数中添加一个名字为host,位置Head的参数,参数值设置为访问后端服务的域名。
3. VPC授权配置Host
登录API网关控制台,在开放API菜单中选择VPC授权,选择VPC所在地域,单击创建授权,在创建VPC授权时指定Host。
4.后端服务配置Host
登录API网关控制台,在开放API菜单中选择后端服务,类型选择HTTP或是VPC(目前后端服务中仅这两种类型支持配置Host)。创建好后端服务以后,在后端服务后的操作栏选择配置及关联的API,进入后端服务定义页面,选择其中一个环境如测试环境,单击右上角的创建,即可定义后端服务地址及Host。
5. 后端路由插件配置Host
后端路由插件中可以通过httpTargetHostName 或vpcTargetHostName来指定API网关请求后端的域名头(Host),这种方式优先级最高,更多配置详情可以参考文档后端路由的1.3章节。
Host头优先级
如果同时用这几种方式配置了Host,优先级为后端路由插件 > 后端服务配置的Host > VPC授权 > 分组开启透传Host头 > API定义常量参数。
分组透传Host头开启后,如果HTTP类型后端地址是域名+端口,Host头也将会被请求域名覆盖。例如:
请求域名为apigateway.test.com,后端服务地址为backend.test.com,开启分组透传Host后,API网关给后端发送的请求中,Host头为apigateway.test.com。