Mark Ku's Blog

OpenResty 與 Kong:高效能 Web 平台與 API Gateway 初探

現在做網站、API,大家都很在意效能跟彈性,OpenResty 就是用 Nginx 加上 Lua 腳本,讓你不只做靜態代理,還能很彈性地處理各種需求,Kong 則是直接用 OpenResty 打造的 API Gateway,很多新創或大公司都在用。這篇就用比較口語的方式,帶你快速認識 OpenResty 跟 Kong,還有怎麼在容器裡 debug。

OpenResty 是什麼?

簡單說,OpenResty 就是 Nginx 加上 Lua,可以寫腳本擴充功能,你想要 API Gateway、反向代理、甚至做 WAF(Web 防火牆)都沒問題。

OpenResty 有什麼厲害的?

  • 超高效能:Nginx 本來就快,加上 Lua 腳本,彈性又快。
  • 擴充超方便:Lua 腳本改一改就能 reload,不用重編譯。
  • 生態圈很大:很多現成 Lua 模組,像認證、快取、API 管理都找得到。
  • 彈性應用:API Gateway、反向代理、WAF、日誌收集都能搞定。

適合誰?

  • 想要高效能 API Gateway 或反向代理的團隊
  • 想用 Lua 快速擴充 Nginx 的工程師
  • 做微服務、DevOps 的朋友

OpenResty 可以拿來做什麼?

  • API Gateway
  • 動態網站
  • 反向代理、負載平衡
  • WAF(Web 防火牆)
  • 日誌、監控收集

Kong:OpenResty 打造的 API Gateway

Kong 就是用 OpenResty 做底層,然後把 API 管理、認證、流量控管都模組化,你要加功能就裝 plugin,超方便。

Kong 有什麼特色?

  • 套件化:功能都用 plugin,想加什麼就加什麼。
  • 高效能:底層就是 OpenResty/Nginx,速度沒話說。
  • 分散式、雲原生:K8s、Docker 都能跑,彈性很大。
  • 社群活躍:遇到問題,網路上很多人可以討論。

Kong 跟 OpenResty 的關係?

Kong 就是把 OpenResty 的彈性發揮到極致,讓你不用自己寫 Lua,也能很快搞定 API Gateway 需求。

除錯 OpenResty 跟 Kong 怎麼做?

  1. 看 Error Log
    • 路徑通常在 /usr/local/openresty/nginx/logs/error.log/var/log/nginx/error.log
    • 適合:初步除錯問題
  2. 開 Debug Log
    • Kong:kong.conflog_level = debug
    • OpenResty:nginx.conferror_log ... debug;
    • 適合:想看更細的執行流程
  3. Lua 腳本加 log
    • ngx.log(ngx.ERR, "Debug info: ", cjson.encode(var))
    • 適合:追蹤變數、流程
  4. API 測試
    • 用 Postman/curl 打 API 看回應
    • 適合:驗證 plugin、路由、認證
  5. Plugin 配置順序
    • Kong 的 plugin 有順序,搞錯會怪怪的
  6. 官方文件/社群

容器(Docker)裡怎麼遠端 debug?

  1. 進容器看日誌
    docker exec -it openresty-container /bin/sh
    tail -f /usr/local/openresty/nginx/logs/error.log
    
  2. 直接看容器 log
    docker logs -f openresty-container
    
  3. 掛本地目錄
    docker run -v /your/local/logs:/usr/local/openresty/nginx/logs ... openresty
    
  4. 抓封包看流量
    sudo tcpdump -i docker0 port 8080
    
  5. VSCode Remote - Containers
    • 直接用 VSCode 編輯、debug 容器裡的檔案,超方便

常見錯誤除錯小撇步

  • nginx.conf 寫錯(可以用 nginx -t 測)
  • 容器網路沒通
  • Lua 腳本有 bug 或少裝套件
  • Plugin 順序搞錯

結語

OpenResty 讓 Nginx 變超強,Kong 又把 API Gateway 做到極致。你只要有 API 管理、流量控管、認證需求,這兩套工具真的很值得玩玩看。遇到問題多看 log、多用社群,debug 也不難!

有問題歡迎留言討論,大家一起進步!

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··597

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··469

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··327

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··239

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··233

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··220

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取
OpenResty 與 Kong:高效能 Web 平台與 API Gateway 初探 - Mark Ku's Blog