最開始只是想找個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編輯vagrantfile,配置私有ipvagrant up
vagrant
ssh
這裡我做了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執行資料庫初始化指令碼 ,初始化orange資料庫database
orange;
create
user
'orange
'@'%
' identified by
'orange';
grant
allprivileges
on orange.*to'
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重啟orangevi /usr/local/orange/orange.conf #修改資料庫連線資訊
vi /usr/local/orange/conf/nginx.conf #配置upstream server,真實api server
sudo訪問 使用者名稱:admin 密碼:orange_admindocker stop orange
sudo docker start orange
至此環境搭建成功
一分鐘只允許2次請求
當請求超過限制的話則會提示http錯誤,而真實的api server不需要做任何操作
#檢視docker日誌最近我發現國內出現了乙個可以直接使用的api閘道器產品(小豹api閘道器),相比開源產品,對企業使用起來更加方便,功能看起來比orange的管理、監控更加強大,看**介紹可以用於微服務閘道器、api服務治理平台、openapi的閘道器。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閘道器是乙個系統的唯一入口。是眾多分布式服務唯一的乙個出口。它做到了物理隔離,內網服務只有通過閘道器才能暴露到外網被別人訪問。簡而言之 閘道器就是你家的大門 身份認證 oauth2 jwt 許可權安全 黑白名單 爬蟲控制 流量控制 請求大小 速率 資料轉換 公共請求request respon...
API閘道器的安全
跨站請求偽造 cross site request forgery 是一種挾制使用者在當前已登入的web程式上執行非本意的操作的攻擊方法,簡單來說就是你在瀏覽器開啟了兩個頁面,其中乙個頁面通過竊取另乙個頁面的cookie來傳送偽造請求 某一家銀行轉賬操作的url位址為 藏身於惡意 的某 片段 若賬戶...
API 閘道器(API Gateway)學習
我是做客戶端開發的,老是聽到服務端開發的同學提到閘道器,最近培訓課上一位老師又講到了閘道器,雖然不知道是什麼,但是聽他講的就是很好,非常方便,所以就來學習一下了。1.1.定義 api 閘道器是乙個處於應用程式或服務 提供 rest api 介面服務 之前的系統,用來管理授權 訪問控制和流量限制等,這...