文章目錄
- 登錄
- 配置路由
- 配置消費者
- 創建后端服務項目
- 配置上游
- 再創建一個路由
- 測試
登錄
http://192.168.10.101:9000
/user/login?redirect=%2Fdashboard
根據docker 容器里的指定端口:
配置路由
通過apisix 的API管理接口來創建(此路由,直接通過APISIX Dashboard可視化界面配置,據我所知是不行,包括key什么的都不知道在什么地方配置),所以直接通過API管理接口來創建。
curl -X PUT 'http://127.0.0.1:9180/apisix/admin/routes/r1' \-H 'X-API-KEY: <api-key>' \-H 'Content-Type: application/json' \-d '{"uri": "/apisix/plugin/jwt/sign","plugins": {"public-api": {}}}'
其中的<api-key>
替換為:
最終為:
curl -X PUT 'http://127.0.0.1:9180/apisix/admin/routes/r1' \-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' \-H 'Content-Type: application/json' \-d '{"uri": "/apisix/plugin/jwt/sign","plugins": {"public-api": {}}}'
當出現以下紅框里的內容時,表明執行成功:
注意以上內容,再往終端控制臺粘貼執行時注意一下格式,有時候格式不對,可以使用AI工具給格式化一下,執行會報其他信息。
執行完畢后,通過APISIX Dashboard上的路由界面可以看到多了一條路由信息:
配置消費者
{"username": "jack","plugins": {"jwt-auth": {"algorithm": "HS256","base64_secret": false,"exp": 86400,"key": "62ebfa59f112a56b0e691df72fbeeffc","secret": "my-secret-key"}}
}
在瀏覽器中輸入:http://192.168.10.101:9080/apisix/plugin/jwt/sign?key=62ebfa59f112a56b0e691df72fbeeffc
如果沒有問題的話,回復JWT Token的。請求參數中的key就是配置的消費者里的key。
創建后端服務項目
在另一臺機器:192.168.10.106上,用JS寫一個在Node.js運行,并可訪問的后臺服務項目。
Node.js的安裝已省略,可參照網上的。
安裝完畢后,看看 node -v 和 npm -v 是否都顯示。
創建項目
cd /opt
mkdir my-node-app
npm init -y #會快速生成package.json
npm install express #web框架
vim app.js
將以下內容寫入到app.js文件中
const express = require('express');
const app = express();
const port = 5001;app.get('/protect/tom', (req, res) => {res.send('Hello Tom! ');
});app.listen(port, () => {console.log(`Server is running at http://localhost:${port}/`);
});
啟動項目:node app.js
通過瀏覽器測試訪問:
后續,我們對以上接口添加JWT驗證,通過apisix進行訪問。一般情況下后端服務的ip都是內網ip,外網是訪問不到的。
關于在空項目目錄下:執行 npm init 或npm init -y的區別?
配置上游
這里的上游,就是我們上面創建的后端服務項目
再創建一個路由
這個路由和之前創建的那個路由,不一樣,這個路由要和我們的上游服務進行綁定,在apisix接收到此路由的url后,會根據此處的路由和上游的綁定關系,將請求轉發到指定的上游。在此路由的設置上還可以綁定一些插件,如jwt-auth等,這樣當apisix接收到匹配此路由的地址后,會先進行認證校驗,校驗成功后,才會將請求轉發到指定的后端。
測試
流程是:客戶端(瀏覽器)——>先請求apisix網關——>再轉發給上游服務(后端服務)
由于在路由層面配置了JWT認證,所以這里會先進行JWT認證,認證成功后,才會轉發到上游服務。
先獲取JWT Token
為了方便測試:接下來使用APIPOST工具