一、OpenResty簡介
OpenResty 是基于 Nginx 的擴展平臺,完全兼容 Nginx 的核心功能(如 HTTP 服務和反向代理),同時通過內嵌 LuaJIT 支持,允許開發者用 Lua 腳本靈活擴展業務邏輯。它簡化了動態邏輯的實現。
二、安裝相關庫文件
yum install pcre-devel openssl-devel gcc curl zlib-devel
三、安裝OpenResty
-
下載 OpenResty 壓縮包
wget -c https://openresty.org/download/openresty-1.27.1.2.tar.gz
-
解壓壓縮包
tar -zxvf openresty-1.27.1.2.tar.gz
-
設置config
./configure
-
編譯
make
-
安裝
make install
-
查看安裝的位置
whereis openresty
四、在配置文件編寫動態邏輯
server {listen 8080;server_name localhost;location / {rewrite_by_lua_block {local args = ngx.req.get_uri_args()-- 是否啟用容災策略-- true:不再經過 ShenYu網關-- false: 經過ShenYu網關 local is_active = false-- 啟用容災 且 存在 targetUrl 時 根據 targetUrl 重定向if is_active and args.targetUrl then-- 拿到 targetUrl 參數 local target_url = args.targetUrlargs.targetUrl = nil-- 重構 url 判斷參數是否為空 local new_args = ngx.encode_args(args)local new_url = target_url .. (new_args ~= "" and "?" .. new_args or "")-- 重定向到目標地址return ngx.redirect(new_url, ngx.HTTP_MOVED_TEMPORARILY)end-- 其他情況:刪除 targetUrl(如果存在)并繼續后續處理if args.targetUrl thenargs.targetUrl = nilngx.req.set_uri_args(args)end}# 代理到 ShenYu網關proxy_pass http://localhost:9195/;}
}