用API閘道器把API管起來

2021-09-07 21:40:15 字數 3484 閱讀 2284

最開始只是想找個api閘道器防止api被惡意請求,找了一圈發現基於nginx的openresty(lua語言)擴充套件模組orange挺好(也找了kong,但是感覺複雜了點沒用),還偷懶用vagrant結合docker來快速搭建環境,基於別人的dockerfile把整個實驗跑通了,覺得還不錯。想著好像coreos是專門為docker服務的,還買了一本《coreos實踐

一般開發介面的時候各種語言都已經有很成熟的框架了,網際網路領域用得最多的應該是restfull+json的模式,但是小型專案對介面基於沒有安全方面、效能等的考慮, 之前寫過一篇直接通過js抓取資料的《玩爽了!直接在chrome裡抓取資料》,就算考慮的話實現起來也缺少簡便的辦法,時間上也不一定允許。

隨著微服務的流行,需要有乙個類似於api閘道器的中介軟體來做api的管理工作,也就是api的實現方面更多的考慮業務邏輯,安全、效能、監控可以交由閘道器來做(如下圖所示,下圖根據kong官方文件修改),這樣既提高業務靈活性又不缺安全性。

開頭已經說了環境會涉及到virtualbox、vagrant、docker、nginx、lua、openrety、orange,好在基本的坑都已經填完了。但你最好也有一些這方面的基礎,由於實驗步驟冗長難免有些地方沒有記錄到或者省略。(本文所有步驟基於macos環境)

提前安裝virtualbox、vagrant

vagrant init centos/7

vagrant up

vagrant

ssh

編輯vagrantfile,配置私有ip

這裡我做了docker volume,還有設定你的mysql root密碼,執行命令進入docker

sudo docker run --name platform-db -v /alidata/database:/var/lib/mysql/ -e mysql_root_password=your_root_password -p 3306:3306 mysql:5.7

sudo docker exec -it platform-db /bin/bash

建立資料庫和使用者

create

database

orange;

create

user

'orange

'@'%

' identified by

'orange';

grant

allprivileges

on orange.*to'

orange

'@'%

';

執行資料庫初始化指令碼 ,初始化orange資料庫

直接使用我發布的docker映象 cbcye/orange5

sudo docker run -d --name orange \

--link platform-db:orange-database \

-p 7777:7777

\ -p 8888:8888

\ -p 9999:9999

\ --security-opt seccomp:unconfined \

cbcye/orange5

編輯配置檔案

sudo docker exec -it platform-db /bin/bash

vi /usr/local/orange/orange.conf #修改資料庫連線資訊

vi /usr/local/orange/conf/nginx.conf #配置upstream server,真實api server

重啟orange

sudo

docker stop orange

sudo docker start orange

訪問 使用者名稱:admin 密碼:orange_admin

至此環境搭建成功

一分鐘只允許2次請求

當請求超過限制的話則會提示http錯誤,而真實的api server不需要做任何操作

#檢視docker日誌

sudo docker logs #檢視所有docker

sudo docker ps --all

#刪除 docker

sudo docker rm

orange

#進入docker控制台(container名稱:platform-db)

sudo docker exec -it platform-db /bin/bash

#orange日誌位置

/usr/local/orange/logs/

最近我發現國內出現了乙個可以直接使用的api閘道器產品(小豹api閘道器),相比開源產品,對企業使用起來更加方便,功能看起來比orange的管理、監控更加強大,看**介紹可以用於微服務閘道器、api服務治理平台、openapi的閘道器。

api閘道器介紹

api閘道器是乙個系統的唯一入口。是眾多分布式服務唯一的乙個出口。它做到了物理隔離,內網服務只有通過閘道器才能暴露到外網被別人訪問。簡而言之 閘道器就是你家的大門 身份認證 oauth2 jwt 許可權安全 黑白名單 爬蟲控制 流量控制 請求大小 速率 資料轉換 公共請求request respon...

API閘道器的安全

跨站請求偽造 cross site request forgery 是一種挾制使用者在當前已登入的web程式上執行非本意的操作的攻擊方法,簡單來說就是你在瀏覽器開啟了兩個頁面,其中乙個頁面通過竊取另乙個頁面的cookie來傳送偽造請求 某一家銀行轉賬操作的url位址為 藏身於惡意 的某 片段 若賬戶...

API 閘道器(API Gateway)學習

我是做客戶端開發的,老是聽到服務端開發的同學提到閘道器,最近培訓課上一位老師又講到了閘道器,雖然不知道是什麼,但是聽他講的就是很好,非常方便,所以就來學習一下了。1.1.定義 api 閘道器是乙個處於應用程式或服務 提供 rest api 介面服務 之前的系統,用來管理授權 訪問控制和流量限制等,這...