lua学习与nginx整合(代码片段)

恒哥~Bingo 恒哥~Bingo     2023-04-01     343

关键词:

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

使用入门

  1. 修改/etc/profile,配置nginx环境变量
    PATH=/usr/local/openresty/nginx/sbin:$PATH
    export PATH

  2. 使profile生效
    source /etc/profile

  3. 启动nginx

    nginx

  4. 修改配置文件/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>")
                
            
        
    
  5. 重启nginx

    nginx -s reload

  6. 测试

    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的高 查看详情