默认情况下, KONG 监听下面几个端口:
- 8000 这个端口用于监听客户端的 HTTP 请求,并转发给上游服务
- 8443 这个端口用于监听客户端的 HTTPS 请求,并转发给上游服务
- 8001 用于接收配置 KONG 的
- 8444 功能同 8001,只是这个端口接收的是 HTTPS 请求
普通服务:
1. 为 http://mockbin.org 添加一个名为 example-service 的服务。
$ curl -i -X POST \ --url http://localhost:8001/services/ \ --data 'name=example-service' \ --data 'url=http://mockbin.org'
2. 为上面创建的服务添加一个路由
$ curl -i -X POST \ --url http://localhost:8001/services/example-service/routes \ --data 'hosts[]=example.com'
这样就配置完成了一个代理服务,通过访问 KONG 的 example.com ,KONG 会把请求转发到 http://mockbin.org。
注意: /services/ 后面的 example-service 需要和第1步中的 --data 'name=' 的值要一样。
3. 运行下面的命令,会返回 http://mockbin.org 的信息。
$ curl -i -X GET \ --url http://localhost:8000/ \ --header 'Host: example.com'
注意: 这里 --header 'Host: ' 的值要和第2步中的 --data 'hosts[]=' 的值要一样。
通常,我们都会对提供的服务进行授权认证。KONG 提供了 插件,可以实现认证的功能。
添加认证
4. 配置 key-auth 插件
$ curl -i -X POST \ --url http://localhost:8001/services/example-service/plugins/ \ --data 'name=key-auth'
此时,我们再次运行 3 中的命令,会得到类似如下的结果:
HTTP/1.1 401 Unauthorized...{ "message": "No API key found in request"}
5. 添加一个消费者
$ curl -i -X POST \ --url http://localhost:8001/consumers/ \ --data "username=Jason"
6. 为上面的用户添加一个 key。下面命令中的 “ENTER_KEY_HERE” 需要替换成想要设置的密钥。
$ curl -i -X POST \ --url http://localhost:8001/consumers/Jason/key-auth/ \ --data 'key=ENTER_KEY_HERE'
7. 在第3步的请求中添加 key 的信息后,可以正常访问了。命令如下:
$ curl -i -X GET \ --url http://localhost:8000 \ --header "Host: example.com" \ --header "apikey: ENTER_KEY_HERE"