openresty(OpenResty快速入门)

OpenResty快速入门

1 OpenResty简介

1.1 了解OpenResty

OpenResty是一个基于 Nginx 与 Lua 的高功能 Web 平台,其内里集成了多量精良的 Lua 库、第三方模块以及大大多的依托项。用于便利地搭建可以处理超高并发、扩展性极高的动态 Web 使用、Web 办事和动态网关。

简便地说OpenResty 的目标是让你的Web办事直接跑在 Nginx 办事内里,富裕使用 Nginx 的非壅闭 I/O 模

型,不仅仅对 HTTP 客户端哀求,乃至于对长程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都举行一律的高功能呼应。

1.2 OpenResty安装

下载对应你体系的OpenResty版本:支持 mac linux windows

(我们如今使用的windows平台版本是1.13.6.2)

选择安装目次(发起非中文)举行解压双击nginx.exe运转即可

测试:掀开欣赏器拜候 localhost

2 快速入门

2.1 动态输入

我们如今做个最简便的小例子,使用Lua脚本动态输入内容,掀开openresty-1.13.6.2-win64目次下的

conf/nginx.conf文件

在server中新增以下代码

location /hello { default_type text/html;
content_by_lua 'ngx.say("<p>hello, world</p>")';
}

相似如此

http {
server {
listen 80; server_name localhost; location / {
default_type text/html;
content_by_lua 'ngx.say("<p>hello, world</p>")';
}
}
}

nginx -s reload如今启动nginx,然后拜候http://localhost/hello ,假如你之前启动了,那么必要nginx -s reload

经过ngx.say 我们可以往客户端输入呼应文本,是不是跟我们tomcat response.write很像嘻嘻,终期我们会使用它输入json

另有一个输入的函数是ngx.print,相反也是输入呼应内容

2.2 优化动态输入

外表的代码直接把lua代码写到nginx设置内里了,维护起来不是很便利,我们把它拿出来一个单独的文件,并 放到openresty-1.13.6.2-win64目次底下单独的lua目次下,便利办理

ngx.say("<p>hello, world</p>")

nginx.conf 改成如此

location / {
default_type text/html;
content_by_lua_file lua/hello.lua;
}

然后nginx -s reload一下,页面后果是一样的

察看以上代码但是还会发觉一个成绩,假如我们想要处理很多个哀求,那不是要在nginx内里设置N个location 吗,我们一定不会这么做,这里可以经过nginx动态婚配指定lua文件名

nginx.conf 改成如此

location ~ /lua/(.+)
{ content_by_lua_file
lua/$1.lua;
}

新建lua/itheima.lua 文件,并编写代码

ngx.print("<p>hello,itheima</p>")

2.3 吸收参数

我们晓得http哀求通常分为两种,分散是GET,POST,在http协议中,GET参数通常会紧跟在uri后方,而

POST哀求参数则包含在哀求体中

使用OpenResty获取哀求参数的办法也有二种,为了一致获取哀求参数的办法,隐蔽具体细节,提供一个更友 好的api接口,我们可以简便的封装一下

创建lua/req.lua 文件

local _M = {}

-- 获取http get/post 哀求参数
function _M.getArgs()
-- 获取http哀求办法 GET or POST
local request_method = ngx.var.request_method
-- 这里是一个table,包含一切get哀求参数
local args = ngx.req.get_uri_args()
-- 假如是post参数获取
if "POST" == request_method then
-- 先读取哀求体
ngx.req.read_body()
-- 这里也是一个table,包含一切post哀求参数local postArgs = ngx.req.get_post_args() if postArgs then
for k, v in pairs(postArgs) do args[k] = v
end
end
end
return args
end

return _M

这个模块就完成了参数的获取,并且支持GET,POST两种传参办法

接下去我们可以写一个简便的lua,来引入这个模块,然后测试一下后果

conf/nginx.conf 必要添加

http {
lua_package_path C:\Users\Ys\Desktop\openresty\openresty-1.13.6.2-win64\lua\?.lua; # 这里一定要指定package_path,不然会找不到引入的模块,然后会500
server {
listen 80;
server_name localhost;
lua_code_cache off;
location ~ /lua/(.+) {
default_type text/html;
content_by_lua_file lua/$1.lua;
}
}
}

创建lua/test.lua 文件

-- 引入req模块
local req = require "req"
-- 获取哀求参数列表
local args = req.getArgs()
-- 获取key为name的值
local name = args['name']
-- 假如不存在指定默许值
if name == nil or name == "" then name = "xiaozhi"
end
-- 输入后果
ngx.say("<p>hello " .. name .. "!</p>")

然后底下这步调

3 总结

本次主要解说了OpenResty在window情况下的安装及使用。经过本篇文章渴望各位可以简便把握OpenResty 吸收页面哀求参数及动态输入内容,后续将给各位带来获取从redis获取数据并以json格式呼应给客户端

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享