Nginx+Lua开发

Lua入门

本文目的是学习Nginx+Lua开发,对于Lua基本知识可以参考如下文章:

Lua简明教程

http://coolshell.cn/articles/10739.html

lua在线lua学习教程

http://book.luaer.cn/

Lua 5.1 参考手册

http://www.codingnow.com/2000/download/lua_manual.html

Lua5.3 参考手册

http://cloudwu.github.io/lua53doc/

Nginx Lua API

和一般的Web Server类似,我们需要接收请求、处理并输出响应。而对于请求我们需要获取如请求参数、请求头、Body体等信息;而对于处理就是调用相应的Lua代码即可;输出响应需要进行响应状态码、响应头和响应内容体的输出。因此我们从如上几个点出发即可。

 

接收请求

1、example.conf配置文件 

  1. location ~ /lua_request/(\d+)/(\d+) {  
  2.     #设置nginx变量  
  3.     set $a $1;   
  4.     set $b $host;  
  5.     default_type "text/html";  
  6.     #nginx内容处理  
  7.     content_by_lua_file /usr/example/lua/test_request.lua;  
  8.     #内容体处理完成后调用  
  9.     echo_after_body "ngx.var.b $b";  
  10. }  

2、test_request.lua 

  1. --nginx变量  
  2. local var = ngx.var  
  3. ngx.say("ngx.var.a : ", var.a, "<br/>")  
  4. ngx.say("ngx.var.b : ", var.b, "<br/>")  
  5. ngx.say("ngx.var[2] : ", var[2], "<br/>")  
  6. ngx.var.b = 2;  
  7.   
  8. ngx.say("<br/>")  
  9.   
  10. --请求头  
  11. local headers = ngx.req.get_headers()  
  12. ngx.say("headers begin""<br/>")  
  13. ngx.say("Host : ", headers["Host"], "<br/>")  
  14. ngx.say("user-agent : ", headers["user-agent"], "<br/>")  
  15. ngx.say("user-agent : ", headers.user_agent, "<br/>")  
  16. for k,v in pairs(headers) do  
  17.     if type(v) == "table" then  
  18.         ngx.say(k, " : ", table.concat(v, ","), "<br/>")  
  19.     else  
  20.         ngx.say(k, " : ", v, "<br/>")  
  21.     end  
  22. end  
  23. ngx.say("headers end""<br/>")  
  24. ngx.say("<br/>")  
  25.   
  26. --get请求uri参数  
  27. ngx.say("uri args begin""<br/>")  
  28. local uri_args = ngx.req.get_uri_args()  
  29. for k, v in pairs(uri_args) do  
  30.     if type(v) == "table" then  
  31.         ngx.say(k, " : ", table.concat(v, ", "), "<br/>")  
  32.     else  
  33.         ngx.say(k, ": ", v, "<br/>")  
  34.     end  
  35. end  
  36. ngx.say("uri args end""<br/>")  
  37. ngx.say("<br/>")  
  38.   
  39. --post请求参数  
  40. ngx.req.read_body()  
  41. ngx.say("post args begin""<br/>")  
  42. local post_args = ngx.req.get_post_args()  
  43. for k, v in pairs(post_args) do  
  44.     if type(v) == "table" then  
  45.         ngx.say(k, " : ", table.concat(v, ", "), "<br/>")  
  46.     else  
  47.         ngx.say(k, ": ", v, "<br/>")  
  48.     end  
  49. end  
  50. ngx.say("post args end""<br/>")  
  51. ngx.say("<br/>"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值