日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OpenResty学习中的几个小例子汇总

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenResty学习中的几个小例子汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.測試lua或是LuaJIT的版本號
如果使用的是標準 Lua,訪問 /lua-version 應當返回響應體 Lua 5.1
如果是 LuaJIT 則應當返回類似 LuaJIT 2.0.2 這樣的輸出。
不要使用標準lua,應當使用luajit, 后者的效率比前者高多了。
在nginx.conf中的server中添加一個location。
location = /test {
location = /lua-version {?
?content_by_lua '?
? ? ? ? ?if jit then?
? ? ? ? ? ? ? ? ?ngx.say(jit.version)?
? ? ? ? ? ? ?else?
? ? ? ? ? ? ? ? ?ngx.say(_VERSION)?
? ? ? ? ?end?
? ? ? ? ';?
}

使用下面的命令檢驗
curl -v 'http://localhost:20000/lua-version'


也可以直接用ldd命令驗證是否鏈了libluajit-5.1這樣的.so文件,例如

ldd /opt/openresty/nginx/sbin/nginx | grep --color lua


2.輸出Hello World示例
在nginx.conf中的server中添加一個location。
location = /test {
? ? ? ?content_by_lua '
? ? ? ? ? ?ngx.say("Hello World")
? ? ? ? ? ?ngx.log(ngx.ERR, "err err err")
? ? ? ?';
}
用戶訪問http://localhost:20000/test將會打印出“Hello World”內容。
curl -v http://localhost:20000/test


ngx.say是lua顯露給模塊的接口。
類似的有ngx.log(ngx.DEBUG, “”),可以在error.log輸出調試信息。

另外也可以調用外部腳本,如同我們寫php、jsp應用時,業務腳本單獨組織在.php或.jsp文件中一樣
location = /test2 {
? ? ? ?content_by_lua_file conf/lua/hello.lua;
}
文件hello.lua內容如下:
ngx.say("Hello World")
這里的腳本可以任意復雜,也可以使用Lua自己的庫

刷新一下nginx.conf的配置
nginx -p ~/or_test -t
nginx -p ~/or_test -s reload

執行下面的命令
curl -v http://localhost:20000/test2

3.阻止某些用戶代理訪問網站
在nginx.conf中的server塊中添加
if ($http_user_agent ~* (Wget|ab) ) {
? ?return 403;
}
來限制用戶代理為wget和ab的請求訪問
重新更新配置
nginx -p ~/or_test -t
nginx -p ~/or_test -s reload


請對比下面的3個請求
curl -v --user-agent wget http://localhost:20000/test2


curl -v --user-agent ab http://localhost:20000/test2

curl -v http://localhost:20000/test2



4.下面是整個nginx.conf的內容

worker_processes  1;
user root;error_log logs/error.log;events {worker_connections 1024;
}http {server {listen 20000;#deny some user-agents accessif ($http_user_agent ~* (wget|ab)) {return 403;}location = /lua-version {content_by_lua 'if jit thenngx.say(jit.version)elsengx.say(_VERSION)end';}location = /test {content_by_lua 'ngx.say("Hello World")ngx.log(ngx.ERR, "err err err")';}location = /test2 {content_by_lua_file conf/lua/hello.lua;}location / {default_type text/html;content_by_lua 'ngx.say("<p>hello, world</p>")';}}
}


5.參考文獻

[1].http://www.ttlsa.com/nginx/nginx-lua/

[2].http://www.ttlsa.com/nginx/how-to-nginx-block-user-agent/

總結

以上是生活随笔為你收集整理的OpenResty学习中的几个小例子汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。