关键词:
Openresty简介
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
Openresty安装
Centos为例
预编译安装
yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
yum install openresty
源码编译安装
1. 下载源码包 http://openresty.org/cn/download.html
2. 解压后,进入目录执行配置命令
./configure
3. 执行编译命令后,出现目录/usr/local/openresty
make && make install
使用入门
-
修改/etc/profile,配置nginx环境变量
PATH=/usr/local/openresty/nginx/sbin:$PATH
export PATH -
使profile生效
source /etc/profile -
启动nginx
nginx
-
修改配置文件/usr/local/openresty/nginx/conf/nginx.conf
server listen 8080; location / default_type text/html; content_by_lua_block ngx.say("<p>hello, world</p>")
-
重启nginx
nginx -s reload
-
测试
curl http://localhost:8080
使用进阶
引入lua脚本
在conf目录中新建lua/hello.lua
ngx.say("<h1>Hello Lua!!</h1>")
修改nginx.conf
server
listen 8080;
location /lua
default_type text/html;
content_by_lua_file conf/lua/hello.lua;
获得URI中的单个变量
修改hello.lua
ngx.say(ngx.var.arg_a)
arg_a能获得参数a的值
http://192.168.7.188:8080/lua?a=zhangsan
获得URI中的所有变量
修改hello.lua
local uri_args = ngx.req.get_uri_args()
for k, v in pairs(uri_args) do
if type(v) == "table" then
ngx.say(k, " : ", table.concat(v, ", "), "<br/>")
else
ngx.say(k, ": ", v, "<br/>")
end
end
可以在网页输出所有参数列表
http://192.168.7.188:8080/lua?a=22&b=33&c=88
获得请求头信息
local headers = ngx.req.get_headers()
ngx.say("Host : ", headers["Host"], "<br/>")
ngx.say("user-agent : ", headers["user-agent"], "<br/>")
ngx.say("user-agent : ", headers.user_agent, "<br/>")
for k,v in pairs(headers) do
if type(v) == "table" then
ngx.say(k, " : ", table.concat(v, ","), "<br/>")
else
ngx.say(k, " : ", v, "<br/>")
end
end
获得POST请求的参数
ngx.req.read_body()
ngx.say("post args begin", "<br/>")
local post_args = ngx.req.get_post_args()
for k, v in pairs(post_args) do
if type(v) == "table" then
ngx.say(k, " : ", table.concat(v, ", "), "<br/>")
else
ngx.say(k, ": ", v, "<br/>")
end
end
获得其他内容
http协议版本
ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "<br/>")
请求方法
ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "<br/>")
原始的请求头内容
ngx.say("ngx.req.raw_header : ", ngx.req.raw_header(), "<br/>")
body内容体
ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), "<br/>")
lua学习与redis整合(代码片段)
Lua脚本简介Redis在2.6版本中推出了脚本功能,允许开发者将Lua语言编写的脚本传到Redis中执行。使用Lua脚本的优点有如下几点:减少网络开销:本来需要多次请求的操作,可以一次请求完成,从而节约网络开销;... 查看详情
nginx框架之lua拓展(代码片段)
目录Lua脚本简述Lua脚本简述脚本特点安装Lualua小例子Nginx增加Lua执行模块Nginx嵌入Lua脚本语言Nginx嵌入Lua脚本语言ngx_lua支持的指令 在OpenResty中演示ngx_lua的指令打造高性能后端接口OpenRestyRedis模块 OpenRestymysql模块 OpenRestyhttp模块Lu... 查看详情
ngx_lua使用分享(代码片段)
2017年04月22日20:05:21阅读数:430Nginx_Lua1.1.介绍1.2.安装1.2.1.安装JIT平台1.2.2.NDK与Lua_module1.2.3.编译安装Nginx1.3.嵌入Lua后1.3.1.检测版本1.3.2.Hello,World1.3.3.同步形式,异步执行1.4.Nginx与Lua执行顺序1.4.1.Nginx顺序1.4.2.Lua顺序Lua基本语法2.1.关 查看详情
redis学习笔记—redis与lua(代码片段)
使用Lua的好处Lua脚本在Redis中是原子执行的,执行过程中间不会插入其他命令Lua脚本可以帮助开发和运维人员创造出自己定制的命令,并可以将这些命令常驻在Redis内存中,实现复用的效果Lua脚本可以将多条命令一次... 查看详情
nginx安装luajwt模块,通过lua验证jwt实现蓝绿发布样例(代码片段)
...ua结尾前言例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、基础组件下载luajit2-2.1-20220411.tar.gz#luajit官网存在一定的坑... 查看详情
nginx安装luajwt模块,通过lua验证jwt实现蓝绿发布样例(代码片段)
...ua结尾前言例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、基础组件下载luajit2-2.1-20220411.tar.gz#luajit官网存在一定的坑... 查看详情
openresty学习指南(代码片段)
我的博客:https://www.luozhiyun.com/archives/217想要学好OpenResty,你必须理解下面8个重点:同步非阻塞的编程模式;不同阶段的作用;LuaJIT和Lua的不同之处;OpenRestyAPI和周边库;协程和cosocket;单元测试框架和性能测试工具;火焰图和... 查看详情
6.kong入门与实战基于nginx和openresty的云原生微服务网关---lua语言(代码片段)
6.1 简介 6.2 环境 yuminstalllibtermcap-devncuress-devellibevent-develreadline-devel curl-R-Ohttp://www.lua.org/ftp/lua-5.3.5.tar.gz tarzxflua-5.3.5.tar.gz cdlua-5.3.5 makelinuxtest ls-s~/lua5.3.5/src/lua 查看详情
lua实现日志收集业务(代码片段)
...0K以上单机并发连接的高性能Web应用系统。关于OpenRestry的学习,可以参考中文社区官网:htt 查看详情
lua基础语法学习(代码片段)
Lua基础语法学习学习链接1、注释2、数据类型3、table库4、表达式5、表的构造6、控制语句7、函数Lua与NginxNginx处理顺序阶段ngx_lua运行指令学习链接https://blog.csdn.net/jiangwei0512/article/details/51057649https://blog.csdn.net/THIOUSTHIOUS/article/details... 查看详情
nginx整合lua步骤
1、Nginx:yuminstallgcc-c++yuminstall-ypcrepcre-develyuminstall-yzlibzlib-develyuminstall-yopensslopenssl-develwget-chttps://nginx.org/download/nginx-1.10.1.tar.gztar-xzfnginx-1.10.1.tar.gz2.下载安 查看详情
nginx整合lua步骤
1、Nginx:yuminstallgcc-c++yuminstall-ypcrepcre-develyuminstall-yzlibzlib-develyuminstall-yopensslopenssl-develwget-chttps://nginx.org/download/nginx-1.10.1.tar.gztar-xzfnginx-1.10.1.tar.gz2.下载安 查看详情
mybatis源码学习与spring整合mapper接口执行原理(代码片段)
一、重要的接口org.mybatis.spring.mapper.MapperFactoryBeanMapperScannerConfigurer会向spring中注册该bean,一个mapper接口注册一个该类是生产MapperProxy对象org.apache.ibatis.binding.MapperProxymapper接口的代理类org.mybatis.spring.SqlSession 查看详情
linux项目六之php服务与nginx的整合(代码片段)
大家好!不知道你们mysql数据库搭建了怎么样了。我还是挺担心大家的,包括自己,我学的比较浅,我也想着进阶,升级。哎,为以后毕业就业担心害怕。转入转入正题。PHP是一种脚本语言,常用... 查看详情
新书《nginx实战:基于lua语言的配置开发与架构详解》开始发售
...行选择性讲解。涉及实战的内容会有配套源码,方便读者学习和使用。 《Nginx实战:基于Lua语言的配置、开发与架构详解》适合广大运维人员和开发人员学习,对使用Nginx完成各种服务架构感兴趣的架构师也可以阅读《Nginx实... 查看详情
lua学习笔记(代码片段)
文章目录1、lua语言介绍1.1语言介绍1.2lua语言应用场景2、开发环境配置与helloworld2.1开发环境配置2.2输出helloworld3、变量命名规范4、基本数据类型一5、基本数据类型二:function6、基本数据类型三:table7、基本运算符(一)8、... 查看详情
lua学习笔记(代码片段)
文章目录1、lua语言介绍1.1语言介绍1.2lua语言应用场景2、开发环境配置与helloworld2.1开发环境配置2.2输出helloworld3、变量命名规范4、基本数据类型一5、基本数据类型二:function6、基本数据类型三:table7、基本运算符(一)8、... 查看详情
lua实现日志收集业务(代码片段)
...是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。OpenResty®OpenResty®是一个基于Nginx与Lua的高 查看详情