概述
OpenResty® 是一個基於 Nginx 和 Lua 的高級 Web,內部集成了大量精良的 Lua 庫,同時模塊以及大多數依賴項。動態 Web 應用、Web 服務和動態網關。
OpenResty® 通過匯集各種設計精良的 Nginx 模塊(主要由 OpenResty 團隊自主開發),從而將 Nginx 有效地變成一個主要的通用 Web 應用平台。這樣,Web 開發人員和系統工程師可以使用 Lua 腳本語言 Nginx支持的各種 C 以及 Lua 模塊,快速構造出未來勝任 10K 關鍵 1000K 以上單機背景的精彩 Web 應用系統。
OpenResty® 的目標是讓你的 Web 服務直接跑在 Nginx 服務內部,充分利用 Nginx 的非互聯網 I/O 模型,模仿對 HTTP 客戶端,甚至於對遠程真實像 MySQL、PostgreSQL、Memcached 和 Redis等都進行一致的響應。
組成
OpenResty 不是一個“單塊”(Monolithic)的程序,由後期設計的組件構成,這些組件可以組裝或固定,共同構建完整的發展發展環境。
核心組件:
- nginx
- LuaJit:Lua語言解釋器
- ngx_lua:處理http協議,讓lua程序嵌入在Nginx裡運行
- stream_lua:處理tcp/udp協議
安裝
採用源碼安裝。
安裝依賴
yum -y install readline-devel pcre-devel openssl-devel gcc gcc-c++ postgresql-devel geoip-devel
下載解壓
cd /opt wget https://openresty.org/download/openresty-1.19.3.1.tar.gz tar zxf openresty-1.19.3.1.tar.gz
編譯安裝
cd openresty-1.19.3.1 # 若不指定路徑,默認會安裝在/usr/local/openresty ./configure --prefix=/opt/openresty \ --with-luajit \ --without-http_redis2_module \ --with-http_iconv_module \ --with-http_postgres_module \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_geoip_module \ --with-http_gzip_static_module \ --with-http_stub_status_module # 根據實際核心數配置 make -j8 && make install
驗證
新增一個location:
location /hello_lua { default_type 'text/plain'; content_by_lua 'ngx.say("hello, lua")'; }
啟動nginx
/opt/openresty/bin/openresty
驗證
[root@test ~]# curl 127.0.0.1/hello_lua hello, lua
ngx_lua相關指令
參考:https://github.com/openresty/lua-nginx-module#directives
來源文章:https://k8sdev.com/2021/05/15/OpenResty%E5%85%A5%E9%97%A8/