默認情況下, KONG 監聽下面幾個端口:
- 8000 這個端口用於監聽客戶端的 HTTP 請求,並轉發給上游服務
- 8443 這個端口用於監聽客戶端的 HTTPS 請求,並轉發給上游服務
- 8001 用於接收配置 KONG 的 Admin API
- 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 提供了 key-auth 插件,可以實現認證的功能。
添加認證
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"