文章目录
openrestry(nginx+luajit) + webadmin
https://konghq.com/ https://docs.konghq.com/
https://github.com/pantsel/konga
https://github.com/kevholditch/gokong
默认他们都存储在db;service与route是最常用的两个概念!
client --> route --> service --> {targets... + upstreams{targets...}...}
- route: nginx中的location; 一个service可以有多个route; name + protos + methods + hosts + paths
- service: nginx中的server(虚拟服务体,对应了upstream或target). name + proto + host:port/path + retries + timeout + tags
- upstream: nginx中的upstream(主要用于实现负载); 名字 + 负载方式 + 健康检测 + tags
- target: nginx中的upstream中的server; ip:port + weight + tags
- consumer: downstream client,使用service的用户;可为consumer添加插件,从而自定义其请求的行为.
无db部署
kong conf init # kong.yml
kong.conf
: DATABASE=off declarative_config=/path/to/kong.yml
port
8000
: listen http request
8443
: listen https
8001
: admin
8444
: https admin
install
dnf install pcre-devel pcre
# 注意:如果监听的地址是127或0.0.0.0或localhost,则外面是不能够访问到的,需改为本机当前使用IP!
# kong会自动到/etc/kong.conf或/etc/kong/kong.conf寻找配置文件,包括/usr/local/kong/nginx-kong.conf都不要修改,都是自动生成的!
vim /etc/kong/kong.conf
kong migrations bootstrap; kong check; kong reload --vv; # kong start会build出nginx配置文件,并启动nginx!
systemctl start kong;
install konga
docker pull pantsel/konga
# 注意: production模式下无法进行数据库的migration!需要去掉该配置.
docker run -itp 1337:1337 -e "TOKEN_SECRET=gda" -e "DB_ADAPTER=postgres"
-e "DB_HOST=192.168.0.174" -e "DB_PORT=5432" -e "DB_USER=kong" -e "DB_PASSWORD=kong" -e "DB_DATABASE=kong"
-e "NODE_ENV=production" --name konga pantsel/konga
# kong-dashboard不好用: docker run -it -p 8080:8080 pgbi/kong-dashboard start --kong-url http://192.168.0.179:8001
admin api
GET /services?tags=tag1,tag2 # tag==tag1 && tag==tag2; 注意,最多五个!不能与或混用!
GET /services?tags=tag1/tag2 # tag==tag1 || tag==tag2
- 创建一个service成功后会返回一个id
- 创建service时(POST|PUT),指定的name如果已经存在了,则会创建失败!
- 修改service时(PATCH|PUT),可以改名字
- 删除service时(DELETE)可以按名字或id来.path中必需指明servicename或id,body中的name或id也必需指明,但不匹配时也能够删除.删除ok返回204!