摘要:用于方便地搭建能夠處理超高并發擴展性極高的動態應用服務和動態網關。安裝安裝依賴庫下載及安裝激活組件被用于構建。大部組件默認是激活的,也有部件不是。您需要通過以下選項在編譯的時候將它們各自激活,和。
OpenResty簡介
OpenResty 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用于方便地搭建能夠處理超高并發、擴展性極高的動態 Web 應用、Web 服務和動態網關。
Lua簡介Lua是一個簡潔、輕量、可擴展的程序設計語言,其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定制功能。Lua由標準C編寫而成,代碼簡潔優美,幾乎在所有操作系統和平臺上都可以編譯,運行。
OpenResty安裝1.安裝依賴庫
yum install readline-devel pcre-devel openssl-devel gcc
2.下載及安裝OpenResty
wget https://openresty.org/download/openresty-1.9.15.1.tar.gz tar xvf openresty-1.9.15.1.tar.gz cd openresty-1.9.15.1 ./configure --with-luajit && make && make install
激活LuaJIT
組件被用于構建 OpenResty。所有的組件可以被激活或禁止。 大部組件默認是激活的,也有部件不是。 LuaJIT、 DrizzleNginxModule、PostgresNginxModule和IconvNginxModule 默認是沒有激活的。您需要通過以下選項在編譯 OpenResty的時候將它們各自激活, --with-luajit、 --with-http_drizzle_module、 --with-http_postgres_module和 --with-http_iconv_module 。
安裝好的OpenResty
從上圖可以看到,openresty在/usr/local目錄下
OpenResty啟動通過下述方式啟動Nginx。如果沒有任何輸出,說明啟動成功,-p 指定我們的項目目錄,-c 指定配置文件。
/usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf /usr/local/openresty/nginx/sbin/nginx -p "pwd" -c /usr/local/openresty/nginx/conf/nginx.conf
為openresty下的nginx建立軟鏈(非必需)
ln -s /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
則可使用如下方式啟動
/usr/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
在瀏覽器中訪問:
OpenResty配置Lua由于原生的Nginx日志沒有resp_body這一選項,通過在nginx.conf中添加Lua腳本的方式定義resp_body。
http { include mime.types; default_type application/octet-stream; log_format main "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for""; log_format log_resp_body "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for" " "$request_time $bytes_sent $request_length "$request_body" "$resp_body""; access_log logs/access.log main; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; access_log logs/access.index.log log_resp_body; lua_need_request_body on; set $resp_body ""; body_filter_by_lua " local resp_body = string.sub(ngx.arg[1], 1, 1000) ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body if ngx.arg[2] then ngx.var.resp_body = ngx.ctx.buffered end "; location / { root html; index index.html index.htm; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
檢測Nginx配置是否正確
/usr/sbin/nginx -t
重啟Nginx
/usr/sbin/nginx -s reload
驗證Lua配置是否成功
tail -f access.log
tail -f access.index.log
參考資料:
OpenResty
OpenResty中文站
nginx-lua
lua-nginx-module
實踐證明,上面body_filter_by_lua中的代碼存在bug,可通過如下方式更正:
body_filter_by_lua " local maxlen = 1000 ngx.ctx.buffered = ngx.ctx.buffered or "" if #ngx.ctx.buffered < maxlen then ngx.ctx.buffered = ngx.ctx.buffered .. string.sub(ngx.arg[1], 1, maxlen - #ngx.ctx.buffered) end if ngx.arg[2] then ngx.var.resp_body = ngx.ctx.buffered end ";
感謝OpenResty 中文郵件列表
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39303.html
摘要:但官方沒有發布相關東西,所以以結合安裝參考官方的為原則編寫。運行測試運行成功,大小,太大了感覺,提交到云端。啟動官方鏡像提交到云端,偶然想搜索下有沒有,竟然反問有官方鏡像,了個下來,還不錯。 前言 為什么要使用openresty? 官方說明:OpenResty? 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項...
摘要:現在用方式調用接口,中使用方式輸入內容日志平臺網關層基于。日志平臺網關層基于到此為止,提取經過網關的接口信息,并將其寫入日志文件就完成了,所有的接口日志都寫入了文件中。 背景介紹 1、問題現狀與嘗試 沒有做日志記錄的線上系統,絕對是給系統運維人員留下的坑。尤其是前后端分離的項目,后端的接口日志可以解決對接、測試和運維時的很多問題。之前項目上發布的接口都是通過Oracle Service...
閱讀 713·2023-04-25 17:54
閱讀 2972·2021-11-18 10:02
閱讀 1132·2021-09-28 09:35
閱讀 649·2021-09-22 15:18
閱讀 2847·2021-09-03 10:49
閱讀 3051·2021-08-10 09:42
閱讀 2573·2019-08-29 16:24
閱讀 1255·2019-08-29 15:08