lua-nginx-module 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
lua-nginx-module 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
lua-nginx-module 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
lua-nginx-module 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
lua-nginx-module 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 BSD
开发语言 C/C++
操作系统 Windows
软件类型 开源软件
开源组织
地区 不详
投 递 者 红薯
适用人群 未知
收录时间 2011-03-22

软件简介

lua-nginx-module (ngx_lua) 可在 Nginx 中嵌入 Lua 语言。让 Nginx 可以支持 Lua 强大的语法。

概要:

 # set search paths for pure Lua external libraries (';;' is the default path):
 lua_package_path '/foo/bar/?.lua;/blah/?.lua;;';

 # set search paths for Lua external libraries written in C (can also use ';;'):
 lua_package_cpath '/bar/baz/?.so;/blah/blah/?.so;;';

 server {
     location /lua_content {
         # MIME type determined by default_type:
         default_type 'text/plain';

         content_by_lua_block {
             ngx.say('Hello,world!')
         }
     }

     location /nginx_var {
         # MIME type determined by default_type:
         default_type 'text/plain';

         # try access /nginx_var?a=hello,world
         content_by_lua_block {
             ngx.say(ngx.var.arg_a)
         }
     }

     location = /request_body {
         client_max_body_size 50k;
         client_body_buffer_size 50k;

         content_by_lua_block {
             ngx.req.read_body()  -- explicitly read the req body
             local data = ngx.req.get_body_data()
             if data then
                 ngx.say("body data:")
                 ngx.print(data)
                 return
             end

             -- body may get buffered in a temp file:
             local file = ngx.req.get_body_file()
             if file then
                 ngx.say("body is in file ", file)
             else
                 ngx.say("no body found")
             end
         }
     }

     # transparent non-blocking I/O in Lua via subrequests
     # (well, a better way is to use cosockets)
     location = /lua {
         # MIME type determined by default_type:
         default_type 'text/plain';

         content_by_lua_block {
             local res = ngx.location.capture("/some_other_location")
             if res then
                 ngx.say("status: ", res.status)
                 ngx.say("body:")
                 ngx.print(res.body)
             end
         }
     }

     location = /foo {
         rewrite_by_lua_block {
             res = ngx.location.capture("/memc",
                 { args = { cmd = "incr", key = ngx.var.uri } }
             )
         }

         proxy_pass http://blah.blah.com;
     }

     location = /mixed {
         rewrite_by_lua_file /path/to/rewrite.lua;
         access_by_lua_file /path/to/access.lua;
         content_by_lua_file /path/to/content.lua;
     }

     # use nginx var in code path
     # CAUTION: contents in nginx var must be carefully filtered,
     # otherwise there'll be great security risk!
     location ~ ^/app/([-_a-zA-Z0-9/]+) {
         set $path $1;
         content_by_lua_file /path/to/lua/app/root/$path.lua;
     }

     location / {
        client_max_body_size 100k;
        client_body_buffer_size 100k;

        access_by_lua_block {
            -- check the client IP address is in our black list
            if ngx.var.remote_addr == "132.5.72.3" then
                ngx.exit(ngx.HTTP_FORBIDDEN)
            end

            -- check if the URI contains bad words
            if ngx.var.uri and
                   string.match(ngx.var.request_body, "evil")
            then
                return ngx.redirect("/terms_of_use.html")
            end

            -- tests passed
        }

        # proxy_pass/fastcgi_pass/etc settings
     }
 }

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2018/11/14 17:12

nginx 安装 lua-nginx-module

需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module 1.下载安装LuaJIT-2.0.5.tar.gz http://luajit.org/download.html wget -c http://luajit.org/download/LuaJIT-2.0.5.tar.gz tar xzvf LuaJIT-2.0.5.tar.gz cd LuaJIT-2.0.5 make install PREFIX=/usr/local/luajit #注意环境变量! vim /etc/profile export LUAJIT_LIB=/usr/local/luajit/lib export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0 #####export L...

0
0
发表了博客
2018/04/03 16:20

Nginx安装lua-nginx-module模块

lua-nginx-module模块地址 https://github.com/openresty/lua-nginx-module It is highly recommended to use OpenResty releases which integrate Nginx, ngx_lua, LuaJIT 2.1, as well as other powerful companion Nginx modules and Lua libraries. It is discouraged to build this module with nginx yourself since it is tricky to set up exactly right. Also, the stock nginx cores have various limitations and lo...

0
0
发表了博客
2018/03/09 16:08

nginx 安装 lua-nginx-module

nginx增加lua模块 yum install -y gcc g++ gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar xzvf LuaJIT-2.0.4.tar.gz cd LuaJIT-2.0.4 make install PREFIX=/usr/local/luajit # 添加环境变量 export LUAJIT_LIB=/usr/local/luajit/lib export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0 ln -s /usr/local/luajit/lib/libl...

0
0
发表了博客
2018/12/23 15:54

Nginx编译安装lua-nginx-module

lua-nginx-module 模块可以将Lua的强大功能嵌入NGINX服务器。 下载Nginx源码 如果已安装Nginx,需要查看当前安装版本的编译参数: $ /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.12.2 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ss...

0
0
发表于大前端专区
2016/12/16 01:00

安装nginx_lua_module以及echo-nginx-module收集日志

unknown directive "access_by_lua" unknown directive "set_unescape_uri" 之所以报错是缺少nginx的三方插件,下面介绍安装nginx的第三方插件,插件很多直介绍三个 方式一: 下载 ngx_openresty,该集成包中有:Nginx,Lua或Luajit,ngx_lua,以及一些有用的Nginx第三方模块。 安装步骤: ./configure --with-luajit make make install 安装完成,个人建议第一种安装方便简单,另外这个版本还提供了很多的组件,安装不会出现错...

0
2
发表于DevOps专区
2015/02/24 13:02

如何安装nginx_lua_module模块

摘要: 本文记录如何安装ngx_lua模块 nginx_lua_module是由淘宝的工程师清无(王晓哲)和春来(章亦春)所开发的nginx第三方模块,它能将lua语言嵌入到nginx配置中,从而使用lua就极大增强了nginx的能力 http://wiki.nginx.org/HttpLuaModule 正文: 1 下载luajit 2.0并安装 http://luajit.org/download.html 我是直接使用源码make && make install 所以lib和include是直接放在/usr/local/lib和usr/local/include 2 下载nginx源码,...

0
0
发表了博客
2018/06/24 15:25

lua-nginx-module模块常用命令

ngx.location.capture 用法: local res = ngx.location.capture(uri, options) 发起一个同步非阻塞的nginx子请求,uri是internal的。 返回的res是个table,索引依次是status(值是number类型)、body(值是string类型)、header(值是table类型)、truncated(值是boolean类型) context: rewrite_by_lua*, access_by_lua*, content_by_lua* Issues a synchronous but still non-blocking Nginx Subrequest using uri. Nginx's subrequ...

0
0
2016/12/21 10:34

学习openresty的log_by_lua*和stream-lua-nginx-module模块

1.实例: log.lua文件 local cjson = require "cjson.safe" local logger = require "resty.logger.socket" if not logger.initted() then local ok, err = logger.init { host = "127.0.0.1", --部署时,需要填写logserver服务器ip port = 1234,--部署时,需要填写logserver服务器port sock_type = "tcp",--采用udp传输 flush_limit = 1,--1就是时实传输, --drop_limit = 5678, --...

0
1
发表了博客
2019/12/02 08:46

nginx 安装 lua_nginx_module 模块(nginx——lua 学习笔记1)

插入两个网站:   nginx + lua 的OpenResty 开发   跟我学OpenResty(Nginx+Lua)开发目录贴   两个都是 可以根据目录一步步学习的。 1. 版本下载 nginx版本为 nginx-1.10.3 , http://nginx.org/en/download.html 下载nginx 版本,不要高版本的,编译lua模块会有错误,暂时不知道原因。 放一个目录。/home/test/ lua_nginx_module模块版本 lua-nginx-module-0.10.2,https://github.com/openresty/lua-nginx-module/tags ...

0
0
发表了博客
2018/02/25 21:00

linux安装lua_nginx_module模块

  ngx_lua_module 是一个nginx http模块,它把 lua 解析器内嵌到 nginx,用来解析并执行lua 语言编写的网页后台脚本,可以用来实现灰度发布。另外淘宝的OpenResty也可实现nginx对lua脚本的的解析,OpenResty相当于对nginx做了二次开发,里面集成了很多模块,用起来,呵呵!本篇文章只说在linux中安装lua_nginx_module模块,并运行一个简单的lua脚本控制nginx的Demo。 1.下载安装LuaJIT 2.1(2.0或者2.1都是支持的,官方推荐2...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2017/06/16 15:53

lua-nginx-module的body_filter_by_lua的ngx.arg[1]不能返回所有response body

如下是我使用的相关软件版本: nginx1.10.2 lua-nginx-module 0.10.7 如下是我的代码nginx.conf代码片段: server { listen 8103; error_log /home/nginx1.10.2/logs/error.log debug; location / { body_filter_by_lua_block { ngx.log(ngx.INFO,"ngx.arg[1]===========", ngx.arg[1]) ngx.log(ngx.INFO,"ngx.arg[2]===========", ngx.arg[2]) ...

2
0
发表了问答
2013/01/23 09:51

nginx中lua_nginx_module模块如何能在修改了lua文件后无需重启即可自动生效

RT 我希望在修改了某一个lua文件之后,无需reload,而是通过某个url让nginx自动清除某个lua文件的cache而重新去读取lua文件。 不知道我的描述够不够清楚,请各位大神帮帮忙

20
2
发表了问答
2016/01/04 14:29

content_by_lua_file问题

我在尝试使用lua-nginx-module的时候,发现用content_by_lua这种形式是可以的,curl可以获取到想要的值,但是通过content_by_lua_file的时候,就发现始终无法获取想要的值,curl返回空。 content_by_lua_file里面的逻辑是最简单的print,不知道为什么?

3
0
发表了问答
2014/08/06 16:30

小米的缩略图是用什么软件的?实时生成的!

http://img06.mifile.cn/v1/MI_55950AFBBEDCB/T1EeZvBvKT1RXrhCrK.jpg?width=300&height=900 width 和height变动就会自己生成缩略图 是用GraphicsMagick吗? 好像可以自己传入参数 他不怕人家刷吗!

4
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
22 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部