openresty ngx_lua正则表达式


openresty ngx_lua正则表达式

        

                 

                                   

ngx.re.match

         

ngx.re.match:返回第一个匹配的结果

语法格式:value, err = ngx.re.match(subject, pattern, options?, ctx?, nth?)
* 如果有匹配结果,返回第一个匹配的结果
* 如果没有匹配的结果,value=nil
* 如果出现异常,value=nil,err为异常信息

# options可选值
i:忽略大小写
o:仅编译一次
m:多行模式
j:启用pcre jit编译,nginx需带参数(--enable-jit),常与参数o一起使用

# ctx:指定开始查找的位置,位置下标从1开始计数
* local ctx = {pos = 10},从位置10开始查找

# nth:将索引为nth的表数据返回,默认为0
* ngx.re.match(subject, pattern)返回value, 
* ngx.re.match(subject, pattern, "oj", nil, 1) <==> value[1]

环境:init_worker_by_lua*、ngx.timer*、balancer_by_lua*
     set_by_lua*、rewrite_by_lua*、access_by_lua*、content_by_lua*
     header_filter_by_lua*、body_filter_by_lua*、log_by_lua*
     ssl_certificate_by_lua*、ssl_session_fetch_by_lua、ssl_session_store_by_lua

             

示例

location / {
    content_by_lua_block {
        local m, err = ngx.re.match(ngx.var.uri, "([0-9]+)(aaa)");
        if m then
            ngx.say(ngx.var.uri, " 匹配成功,返回的结果类型 ==> ", type(m));
            ngx.say(ngx.var.uri, " m[0] ==> ", m[0]);  #m[0]返回第一个匹配的全部数据
            ngx.say(ngx.var.uri, " m[1] ==> ", m[1]);  #m[1]数据中第1个括号中的数据
            ngx.say(ngx.var.uri, " m[2] ==> ", m[2]);  #m[2]数据中第2个括号中的数据
            ngx.say(ngx.var.uri, " m[3] ==> ", m[3]);  #m[3]数据中第3个括号中的数据,没有则为nil
        else
           if err then
              ngx.say(ngx.var.uri, "匹配出错:", err);
           end
           ngx.say(ngx.var.uri, "没查到匹配结果");
        end
    }
}

curl localhost:80/123aaa/234aaa,结果输出:
/123aaa/234aaa 匹配成功,返回的结果类型 ==> table
/123aaa/234aaa m[0] ==> 123aaa
/123aaa/234aaa m[1] ==> 123
/123aaa/234aaa m[2] ==> aaa
/123aaa/234aaa m[3] ==> nil

              

                 

                                   

ngx.re.gmatch

         

ngx.re.gmatch:返回迭代器,可遍历输出全部匹配数据

语法格式:value, err = ngx.re.match(subject, pa
`ngx_upstream_module` 是 OpenResty 中的一个模块,它提供了对 upstream 的支持。Upstream 是一个概念,用于表示一组后端服务器。在使用 upstream 时,客户端的请求会被反向代理到一个或多个后端服务器上进行处理。 `ngx_upstream_module` 提供了一些方法和指令,可以动态地管理 upstream 中的服务器,包括添加、删除、修改服务器等操作。常用的指令包括: - upstream:定义一个 upstream。 - server:定义一个服务器,包括地址和端口等信息。 - keepalive:设置连接池的大小。 - least_conn:使用最少连接数的负载均衡算法。 - ip_hash:使用 IP 地址进行哈希的负载均衡算法。 常用的方法包括: - ngx.upstream.get_servers(name):获取一个 upstream 中所有的服务器。 - ngx.upstream.add_server(name, server, weight):向一个 upstream 中添加服务器。 - ngx.upstream.remove_server(name, server):从一个 upstream 中删除服务器。 - ngx.upstream.set_peer_down(name, server):将一个服务器标记为不可用。 - ngx.upstream.set_peer_up(name, server):将一个服务器标记为可用。 在使用 `ngx_upstream_module` 时,需要在编译 OpenResty 时包含 `--with-http_upstream_module` 选项。可以通过以下命令检查当前 OpenResty 是否已经安装了 `ngx_upstream_module` 模块: ```shell $ /path/to/openresty/nginx/sbin/nginx -V 2>&1 | grep -o with-http_upstream_module ``` 需要将 `/path/to/openresty` 替换为实际的 OpenResty 安装路径。如果输出 `with-http_upstream_module`,则说明已经安装了 `ngx_upstream_module` 模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值