百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

OpenResty快速入门(openresty 原理)

liuian 2025-03-20 16:23 40 浏览

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("

hello, world

")'; }

类似这样

http {
server {
listen 80; server_name localhost; location / {
default_type text/html;
content_by_lua 'ngx.say("

hello, world

")'; } } }

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("

hello, world

")

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("

hello,itheima

")

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("

hello " .. name .. "!

")

然后下面这步骤

3 总结

本次主要讲解了OpenResty在window环境下的安装及使用。通过本篇文章希望大家可以简单掌握OpenResty 接收页面请求参数及动态输出内容,后续将给大家带来获取从redis获取数据并以json格式响应给客户端

相关推荐

计算机计算器(计算机计算器区别)

计算器是现代人发明的可以进行数字运算的电子机器。现代的电子计算器能进行数学运算的手持电子机器,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱,但较为方便与廉价...

联想台式电脑价格(联想台式电脑价格一览表)

配置如下主板sis-651CPUIntelCeleronProcessor2.00GHz硬盘希捷ST3160215A(150G)新显示器即插即用监视器(LCSA771LXH-GJ769F3)显卡SiS...

华为手机驱动官网下载(华为手机驱动官网下载不了)

华为手机驱动程序安装方法:1:首先把华为手机连接电脑,在手机下拉通知栏中选择“设备文件管理(MTP)”或者“作为USB存储设备连接”或者“仅充电”的模式选择,进入USB计算机连接菜单选择“PC助手(...

win7系统设置定时关机任务(win7定时关机怎么设置方法)

在Win7系统中,可以通过“任务计划程序”来设置定时自动关机。首先打开“任务计划程序”,选择“创建基本任务”,按照向导步骤设置任务名称、触发器(选择“按计划时间安排”并设置时间)、操作(选择“程序启动...

126免费邮箱登录入口官网电脑版

126邮箱是网易的一个免费邮箱登录入口在浏览器输入:mail.126.com浏览器进入126邮箱网站之后,即可自行登录126邮箱账号。如何在手机上登录126邮箱1、打开手机,找到并打开网易邮箱软件。2...

windows优化大师软件平台(windows优化大师是实用程序吗)

最新版本:优化大师V7.99Build10.1221,最新的优化大师版本已可以兼容Vista,开发小组,将发布7.99.10.621的全新版本,带全新首页专业版的功能,免费。you...

台式电脑如何更换鼠标(台式电脑怎么换鼠标键盘)

是的,台式电脑可以更换键盘和鼠标。键盘和鼠标通常使用标准的USB接口连接到电脑,因此只需拔下原有的键盘和鼠标,然后插入新的键盘和鼠标即可。这样可以根据个人喜好和需求选择适合自己的键盘和鼠标,提高使用体...

笔记本电脑如何重置系统(笔记本电脑重置系统会怎么样)

重装系统建议使用U盘来完成。用U盘(16G左右就行)装系统,应先将U盘制作为可引导系统的盘(就是启动盘)。然后将系统文件复制到该U盘的GHO文件夹或ISO文件夹中(系统文件是GHO文件就复制到GHO中...

qq号怎样找回密码(qq号如何找回密码)
  • qq号怎样找回密码(qq号如何找回密码)
  • qq号怎样找回密码(qq号如何找回密码)
  • qq号怎样找回密码(qq号如何找回密码)
  • qq号怎样找回密码(qq号如何找回密码)
笔记本电脑怎样安装软件(笔记本怎么安装应用软件)
  • 笔记本电脑怎样安装软件(笔记本怎么安装应用软件)
  • 笔记本电脑怎样安装软件(笔记本怎么安装应用软件)
  • 笔记本电脑怎样安装软件(笔记本怎么安装应用软件)
  • 笔记本电脑怎样安装软件(笔记本怎么安装应用软件)
显卡最新消息(50系super显卡最新消息)

不会的,电脑里面的软件都是安装在硬盘里面,注册信息也是在硬盘,跟显卡没有任何关系。所以显卡换了,电脑系统和数据都不会有任何改变。CPU、显卡、内存是电脑运行必备的硬件,它们是处理数据的硬件,不会存储数...

ios是什么意思手机(苹果手机ios是啥意思)

对的,ios是苹果手机搭载的系统,但是不仅仅是应用在iphone手机哦,在苹果台式电脑、笔记本电脑、平板电脑以及苹果其它设备都是搭载的ios系统。它是苹果公司开发的独立且封闭性的操作系统,不对外公开,...

什么网站可以免费下载电影(在哪个网站下载电影免费)

1.ITunesMovieTrailers苹果的预告片库,库中影片的画质都很不错,基本上覆盖了当前的主流电影,以美国电影居多,国内的片子比较少,如果需要从中下载,那么下载时需要配合浏览器的资源嗅探...

怎样下载word文档(如何免费使用word文档)
  • 怎样下载word文档(如何免费使用word文档)
  • 怎样下载word文档(如何免费使用word文档)
  • 怎样下载word文档(如何免费使用word文档)
  • 怎样下载word文档(如何免费使用word文档)
破解版手游下载平台(破解版手游下载平台app)

我很抱歉,我不能提供给您任何非法下载的方式。迷失的女孩是一款由MaximTheRobotLLC开发的游戏,与其他的游戏一样,版权被保护。如果您想下载该游戏,请在官方应用商店(如GooglePl...