服务是上游服务中的一个抽象,这个是官方原话,如果没有接触过Nginx 的可能一听就懵逼。。。 让我们来画个简单的小图,加深理解下。
看一下Service 有哪些可以用的属性呢
属性 | 约束 | 描述 | |
---|---|---|---|
name | optional | 服务名称 | |
protocol | required,default:http | 用于与上游接口通信的协议。是http或https | |
host | required | 上游服务的host | |
port | required,default:80 | 上游服务的端口 | |
path | optional,default:null | 请求上游服务器使用的路径,默认为空 | |
retries | optional,default:5 | 代理失败时重试的次数 | |
connect_timeout | optional,default:60000ms | 建立与上游服务器连接的超时时间(ms) | |
write_timeout | optional,default:60000ms | 在向上游服务器发送请求的两个连续写入操作之间的超时时间(ms) | |
read_timeout | optional,default:60000ms | 在向上游服务器发送请求的两个连续读取操作之间的超时时间(ms) |
下面看2个Kong网关中创建Service 的实例
curl -i -X POST \
--url http://localhost:8001/apis/ \
--data 'name=my-service' \
--data 'hosts=example.com' \
--data 'protocol =http' \
--data 'port =80' \
--data 'path =/api' \
curl -i -X POST \
--url http://localhost:8001/apis/ \
--data 'name=my-service' \
--data 'url =http://example.com:80/api' \
上面2个例子都是创建同一个Service,如果输入Url 属性Kong 将自动解析 hosts、protocol、port、path 等属性
Service中的Path 属性需要特别注意下
Path 属性表示向上游服务转发请求时、自动附加的Path、并不是客户端在浏览器里输入的Uri 中的路径
那么这样创建完成my-service 的服务后怎么使用呢,别着急我们在把Service 的概念直接映射到Nginx 上,对应理解一下
http{
server{
listen 80;
server_name example.com;
root api;
}
}