首頁 後端開發 php教程 ngx_lua 模組API說明

ngx_lua 模組API說明

Jul 30, 2016 pm 01:31 PM
http location lua

ngx_lua模組API說明

#Ngx指令
lua_code_cache on | off;
作用:開啟或關閉Lua 程式碼快取,影響下列指令: set_by_lua_file 載入, 1_lu_file_lu_lu_fess_fess_s_file, 1_ Lua 模組等.緩存開啟時修改LUA代碼需要重啟nginx,不開啟時則不用。開發階段一般關閉快取。
作用域:main, server, location, location if
lua_regex_cache_max_entries 1024;
作用:未知(貌似是限定快取正規表示式處理結果的最大數量)

作用:未知(似是限定/path 作用:設定用lua程式碼寫的擴充庫路徑。
例:lua_package_path '/foo/bar/?.lua;/blah/?.lua;;';
lua_package_cpath '/bar/baz/?.so;/blah/blah/?.so;;';
作用:設定C擴展的lua庫路徑。
set_by_lua $var '' [$arg1 $arg2];
set_by_lua_file $var [$arg1 $arg2 ...];
作用:設定一個Nginx變量,變數值從lua腳本運算由return返回,可以實現複雜的賦值邏輯;此處是阻塞的,Lua程式碼要做到非常快.
另外可以將已有的ngx變數當作參數傳進Lua腳本裡去,由ngx.arg[1],ngx.arg[2]等方式訪問。
作用域:main, server, location, server if, location if
處理階段:rewrite
content_by_lua '';
content_by_lua_file luafile;
作用域:location, location if
說明:內容處理器,接收請求處理並輸出回應,content_by_lua直接在nginx設定檔裡編寫較短Lua程式碼後者使用lua檔案。
rewrite_by_lua ''
rewrite_by_lua_file lua_file;
作用域:http, server, location, location if
。其預設執行在rewrite處理階段的最後.
注意,在使用rewrite_by_lua時,開啟rewrite_log on;後也看不到對應的rewrite log。
access_by_lua 'lua code';
access_by_lua_file lua_file.lua;
作用:用於訪問控制,例如我們只允許內網ip訪問,可以使用以下形式。
access_by_lua '
if ngx.req.get_uri_args()["token"] ~= "123" then  
  )
作用域:http, server, location, location ifheader_filter_by_lua 'lua code';
header_filter_by_lua_file path_file.lua;
作用:設置header 和cookie;
lua_need_request_body on|off;
作用:是否讀請求體,跟ngx .req.read_body()函數作用類似,但官方不建議使用此方法。
lua_shared_dict shared_data 10m;
作用:設定一個共享全域變數表,在所有worker進程間共用。在lua腳本中可以如下存取它:

例:local shared_data = ngx.shared.shared_data 
10m 不知是什麼意思。 init_by_lua 'lua code';
init_by_lua_file lua_file.lua;
作用域:http

說明:ginx Master程序載入組態時執行;通常用於初始化全域設定時執行;通常用於初始化全域組態:Lginx Masterer7bya_iwork'swork; ;init_worker_by_lua_file luafile.lua;
作用域:http


說明:每個Nginx Worker進程啟動時調用的計時器,如果Master呼叫取配置/數據,或後端服務的健康檢查。
#######################

 

方法與常數 

###################################################################################################################如果#################################################如果############################################' ####

ngx.arg[index]  			#ngx指令参数,当这个变量在set_by_lua或者set_by_lua_file内使用的时候是只读的,指的是在配置指令输入的参数.
ngx.var.varname  			#读写NGINX变量的值,最好在lua脚本里缓存变量值,避免在当前请求的生命周期内内存的泄漏
ngx.config.ngx_lua_version 	#当前ngx_lua模块版本号
ngx.config.nginx_version 	#nginx版本
ngx.worker.exiting 			#当前worker进程是否正在关闭
ngx.worker.pid				#当前worker进程的PID
ngx.config.nginx_configure	#编译时的./configure命令选项
ngx.config.prefix 			#编译时的prefix选项

core constans:				#ngx_lua 核心常量
	ngx.OK (0)
	ngx.ERROR (-1)
	ngx.AGAIN (-2)
	ngx.DONE (-4)
	ngx.DECLINED (-5)
	ngx.nil
http method constans:		#经常在ngx.location.catpure和ngx.location.capture_multi方法中被调用.
	ngx.HTTP_GET
	ngx.HTTP_HEAD
	ngx.HTTP_PUT
	ngx.HTTP_POST
	ngx.HTTP_DELETE
	ngx.HTTP_OPTIONS  
	ngx.HTTP_MKCOL    
	ngx.HTTP_COPY      
	ngx.HTTP_MOVE     
	ngx.HTTP_PROPFIND 
	ngx.HTTP_PROPPATCH 
	ngx.HTTP_LOCK 
	ngx.HTTP_UNLOCK    
	ngx.HTTP_PATCH   
	ngx.HTTP_TRACE  
http status constans: 		#http请求状态常量 
	ngx.HTTP_OK (200)
	ngx.HTTP_CREATED (201)
	ngx.HTTP_SPECIAL_RESPONSE (300)
	ngx.HTTP_MOVED_PERMANENTLY (301)
	ngx.HTTP_MOVED_TEMPORARILY (302)
	ngx.HTTP_SEE_OTHER (303)
	ngx.HTTP_NOT_MODIFIED (304)
	ngx.HTTP_BAD_REQUEST (400)
	ngx.HTTP_UNAUTHORIZED (401)
	ngx.HTTP_FORBIDDEN (403)
	ngx.HTTP_NOT_FOUND (404)
	ngx.HTTP_NOT_ALLOWED (405)
	ngx.HTTP_GONE (410)
	ngx.HTTP_INTERNAL_SERVER_ERROR (500)
	ngx.HTTP_METHOD_NOT_IMPLEMENTED (501)
	ngx.HTTP_SERVICE_UNAVAILABLE (503)
	ngx.HTTP_GATEWAY_TIMEOUT (504) 

Nginx log level constants:		#错误日志级别常量 ,这些参数经常在ngx.log方法中被使用.
	ngx.STDERR
	ngx.EMERG
	ngx.ALERT
	ngx.CRIT
	ngx.ERR
	ngx.WARN
	ngx.NOTICE
	ngx.INFO
	ngx.DEBUG

##################
#API中的方法:
##################
print()							#与 ngx.print()方法有区别,print() 相当于ngx.log()
ngx.ctx 						#这是一个lua的table,用于保存ngx上下文的变量,在整个请求的生命周期内都有效,详细参考官方
ngx.location.capture() 			#发出一个子请求,详细用法参考官方文档。
ngx.location.capture_multi() 	#发出多个子请求,详细用法参考官方文档。
ngx.status 						#读或者写当前请求的相应状态. 必须在输出相应头之前被调用.
ngx.header.HEADER 				#访问或设置http header头信息,详细参考官方文档。
ngx.req.set_uri() 				#设置当前请求的URI,详细参考官方文档
ngx.set_uri_args(args) 			#根据args参数重新定义当前请求的URI参数.
ngx.req.get_uri_args()			#返回一个LUA TABLE,包含当前请求的全部的URL参数
ngx.req.get_post_args()			#返回一个LUA TABLE,包括所有当前请求的POST参数
ngx.req.get_headers()			#返回一个包含当前请求头信息的lua table.
ngx.req.set_header()			#设置当前请求头header某字段值.当前请求的子请求不会受到影响.
ngx.req.read_body()				#在不阻塞ngnix其他事件的情况下同步读取客户端的body信息.[详细]
ngx.req.discard_body()			#明确丢弃客户端请求的body
ngx.req.get_body_data()			#以字符串的形式获得客户端的请求body内容
ngx.req.get_body_file()   	 	#当发送文件请求的时候,获得文件的名字
ngx.req.set_body_data()			#设置客户端请求的BODY
ngx.req.set_body_file()			#通过filename来指定当前请求的file data。
ngx.req.clear_header()			#清求某个请求头
ngx.exec(uri,args)				#执行内部跳转,根据uri和请求参数
ngx.redirect(uri, status)		#执行301或者302的重定向。
ngx.send_headers()				#发送指定的响应头
ngx.headers_sent 				#判断头部是否发送给客户端ngx.headers_sent=true
ngx.print(str)					#发送给客户端的响应页面
ngx.say()						#作用类似ngx.print,不过say方法输出后会换行
ngx.log(log.level,...)			#写入nginx日志
ngx.flush()						#将缓冲区内容输出到页面(刷新响应)
ngx.exit(http-status)			#结束请求并输出状态码
ngx.eof()						#明确指定关闭结束输出流
ngx.escape_uri()				#URI编码(本函数对逗号,不编码,而php的urlencode会编码)
ngx.unescape_uri()				#uri解码
ngx.encode_args(table)			#将tabel解析成url参数
ngx.decode_args(uri)			#将参数字符串编码为一个table
ngx.encode_base64(str)			#BASE64编码
ngx.decode_base64(str)			#BASE64解码
ngx.crc32_short(str)			#字符串的crs32_short哈希
ngx.crc32_long(str)				#字符串的crs32_long哈希
ngx.hmac_sha1(str)				#字符串的hmac_sha1哈希
ngx.md5(str)					#返回16进制MD5
ngx.md5_bin(str)				#返回2进制MD5
ngx.today()						#返回当前日期yyyy-mm-dd
ngx.time()						#返回当前时间戳
ngx.now()						#返回当前时间
ngx.update_time()				#刷新后返回
ngx.localtime()					#返回 yyyy-mm-dd hh:ii:ss
ngx.utctime()					#返回yyyy-mm-dd hh:ii:ss格式的utc时间
ngx.cookie_time(sec)			#返回用于COOKIE使用的时间
ngx.http_time(sec)				#返回可用于http header使用的时间		
ngx.parse_http_time(str)		#解析HTTP头的时间
ngx.is_subrequest 				#是否子请求(值为 true or false)
ngx.re.match(subject,regex,options,ctx)  	#ngx正则表达式匹配,详细参考官网
ngx.re.gmatch(subject,regex,opt)			#全局正则匹配
ngx.re.sub(sub,reg,opt)			#匹配和替换(未知)
ngx.re.gsub()					#未知
ngx.shared.DICT 				#ngx.shared.DICT是一个table 里面存储了所有的全局内存共享变量
	ngx.shared.DICT.get	 
	ngx.shared.DICT.get_stale	 
	ngx.shared.DICT.set	 
	ngx.shared.DICT.safe_set	 
	ngx.shared.DICT.add	 
	ngx.shared.DICT.safe_add	 
	ngx.shared.DICT.replace	 
	ngx.shared.DICT.delete	 
	ngx.shared.DICT.incr	 
	ngx.shared.DICT.flush_all	 
	ngx.shared.DICT.flush_expired	 
	ngx.shared.DICT.get_keys
ndk.set_var.DIRECTIVE			#不懂
登入後複製
#參考文件:
http://wiki.nginx.org/HttpLuaModuleZh#Core_constants ngx_lua官方文件
http://blog.csdn.net/imlsz/article/details/342 API的主要內容翻譯http://jinnianshilongnian.iteye.com/blog/2186448     對ngx_lua使用文件有詳細的例子
http://www.cnblogs.com/wangxusummer/p/4309007.html  的簡單介紹


版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。


以上就介紹了ngx_lua 模組API說明,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
http狀態碼520是什麼意思 http狀態碼520是什麼意思 Oct 13, 2023 pm 03:11 PM

http狀態碼520是指伺服器在處理請求時遇到了一個未知的錯誤,無法提供更具體的資訊。用於表示伺服器在處理請求時發生了一個未知的錯誤,可能是由於伺服器配置問題、網路問題或其他未知原因導致的。通常是由伺服器配置問題、網路問題、伺服器過載或程式碼錯誤等原因導致的。如果遇到狀態碼520錯誤,最好聯絡網站管理員或技術支援團隊以取得更多的資訊和協助。

http狀態碼403是什麼 http狀態碼403是什麼 Oct 07, 2023 pm 02:04 PM

http狀態碼403是伺服器拒絕了客戶端的請求的意思。解決http狀態碼403的方法是:1、檢查身份驗證憑證,如果伺服器要求身份驗證,確保提供正確的憑證;2、檢查IP位址限制,如果伺服器對IP位址進行了限制,確保客戶端的IP位址被列入白名單或未列入黑名單;3、檢查文件權限設置,如果403狀態碼與文件或目錄的權限設置有關,確保客戶端具有足夠的權限訪問這些文件或目錄等等。

Vue.js與Lua語言的融合,編寫輕量級的嵌入式應用 Vue.js與Lua語言的融合,編寫輕量級的嵌入式應用 Jul 31, 2023 pm 02:23 PM

Vue.js與Lua語言的融合,編寫輕量級的嵌入式應用在現代開發中,前端框架Vue.js和腳本語言Lua都各自有著廣泛的應用。 Vue.js是一款用於建立使用者介面的漸進式框架,而Lua則是一種輕量級的腳本語言,經常用於嵌入式應用和遊戲開發。本文將介紹如何將Vue.js與Lua語言進行融合,用於編寫輕量級的嵌入式應用,並提供程式碼範例。首先,我們需要安裝Vue.j

瞭解網頁重定向的常見應用場景並了解HTTP301狀態碼 瞭解網頁重定向的常見應用場景並了解HTTP301狀態碼 Feb 18, 2024 pm 08:41 PM

掌握HTTP301狀態碼的意思:網頁重定向的常見應用場景隨著網路的快速發展,人們對網頁互動的要求也越來越高。在網頁設計領域,網頁重定向是一種常見且重要的技術,透過HTTP301狀態碼來實現。本文將探討HTTP301狀態碼的意義以及在網頁重新導向中的常見應用場景。 HTTP301狀態碼是指永久重新導向(PermanentRedirect)。當伺服器接收到客戶端發

HTTP 200 OK:了解成功回應的意義與用途 HTTP 200 OK:了解成功回應的意義與用途 Dec 26, 2023 am 10:25 AM

HTTP狀態碼200:探索成功回應的意義與用途HTTP狀態碼是用來表示伺服器回應狀態的數字代碼。其中,狀態碼200表示請求已成功被伺服器處理。本文將探討HTTP狀態碼200的具體意義與用途。首先,讓我們來了解HTTP狀態碼的分類。狀態碼分為五個類別,分別是1xx、2xx、3xx、4xx和5xx。其中,2xx表示成功的回應。而200是2xx中最常見的狀態碼

如何使用Nginx Proxy Manager實現HTTP到HTTPS的自動跳轉 如何使用Nginx Proxy Manager實現HTTP到HTTPS的自動跳轉 Sep 26, 2023 am 11:19 AM

如何使用NginxProxyManager實現HTTP到HTTPS的自動跳轉隨著互聯網的發展,越來越多的網站開始採用HTTPS協議來加密傳輸數據,以提高數據的安全性和用戶的隱私保護。由於HTTPS協定需要SSL憑證的支持,因此在部署HTTPS協定時需要有一定的技術支援。 Nginx是一款強大且常用的HTTP伺服器和反向代理伺服器,而NginxProxy

Vue.js與Lua語言的融合,建構遊戲開發的前端引擎的最佳實踐和經驗分享 Vue.js與Lua語言的融合,建構遊戲開發的前端引擎的最佳實踐和經驗分享 Aug 01, 2023 pm 08:14 PM

Vue.js與Lua語言的融合,建構遊戲開發的前端引擎的最佳實踐和經驗分享引言:隨著遊戲開發的不斷發展,遊戲前端引擎的選擇成為了一個重要的決策。在這些選擇中,Vue.js框架和Lua語言都成為了眾多開發者的關注點。 Vue.js作為一款受歡迎的前端框架具有豐富的生態系統和便捷的開發方式,而Lua語言則因其輕量級和高效性能在遊戲開發中得到廣泛應用。本文將探討如何將

使用http.PostForm函數傳送帶有表單資料的POST請求 使用http.PostForm函數傳送帶有表單資料的POST請求 Jul 25, 2023 pm 10:51 PM

使用http.PostForm函數發送帶有表單資料的POST請求在Go語言的http包中,可以使用http.PostForm函數發送帶有表單資料的POST請求。 http.PostForm函數的原型如下:funcPostForm(urlstring,dataurl.Values)(resp*http.Response,errerror)其中,u

See all articles