前言

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

然而nginx也提供了使用lua的模块,并且提供了相关的指令用来执行lua代码。使用lua在某些情况可以代替后台的功能实现,直接在nginx中调用lua代码实现后台逻辑,比如登录拦截等功能就可以使用lua实现。

nginx安装部署lua

1、编译安装lua

wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
tar xf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
make PREFIX=/usr/local/luajit
make install PREFIX=/usr/local/luajit

首先下载lua源码包,然后用如上命令编译安装即可。

2、下载扩展模块

cd /usr/local/src/
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar -xf v0.3.0.tar.gz
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz
tar xf v0.10.8.tar.gz

使用lua还需要安装以上依赖的模块。

3、在安装模块之前可以先查看之前编译的模块

./nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments:

在之前已经编译的模块基础再添加lua模块。

4、开始编译安装nginx并且添加需要的模块

//设置环境变量
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
设置完成后记得source profile
//下载nginx
wget http://nginx.org/download/nginx-1.10.3.tar.gz
//编译
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.8
//安装
make && make install

注意:如果出如下错误 b = hc->busy[i]代码错误,则有可能是nginx版本过高导致,可降低版本试下。

已经编译的nginx安装lua模块

1、先使用./nginx -V命令查看已经编译的模块,和上面的步骤类似。

2、设置环境变量

export LUAJIT_LIB=/usr/local/luajit/lib

export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0

3、进入之前编译过的源码包目录,执行如下编译命令

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.8

make && make install 即可完成部署。

最后使用./nginx -V命令查看是否加入lua模块

4、错误解决方案

error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory//如果报一下错误则可以使用find / -name "libluajit-5.1.so.2"查找此文件所在目录最后创建软连接ln -s /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/

编写一个简单的lua脚本程序

1、在nginx.conf中加入以下代码

##在配置文件中加入以下代码location /lua {            default_type 'text/html';            content_by_lua_file conf/lua/test.lua; #相对于nginx安装目录}##此处注意,这里最好新建一个location 来测试。

2、开始编写lua脚本

 ##执行一下命令[root@zhaoyd conf]pwd[root@zhaoyd conf]# /usr/local/nginx-1.10.2/conf[root@zhaoyd conf]# mkdir lua && cd lua [root@zhaoyd lua]# vim test.lua##脚本中添加内容ngx.say("hello world");##启动nginx/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf##使用ip/lua访问输出hello world即可表示无问题。

nginx对lua脚本支持的一些指令

set_by_lua 设置nginx变量 可以实现复杂赋值逻辑

set_by_lua_file 设置nginx变量 可以实现复杂赋值逻辑

access_by_lua 请求访问阶段处理。用于访问控制

access_by_lua_file 请求访问阶段处理。用户访问控制

content_by_lua 内容处理器。 处理接受和响应输出

content_by_lua_file 内容处理器。 处理接受和响应输出

nginx lua api

ngx.var nginx变量

ngx.req.get_headers 获取请求头

ngx.req.get_uri_args 获取url请求参数

ngx.redirect 重定向

ngx.print 输出响应内容体

ngx.say 和 ngx.print一样,但最后会输出一个换行符

ngnx.header 输出响应头

lua游戏脚本实例源码_在nginx中使用强大的lua实现定向需求相关推荐

  1. lua游戏脚本实例源码_Lua与其他宿主语言交互原理剖析

    Lua与其他宿主语言交互原理剖析 题外话:今天周末,刚好在家有时间就把我这次项目组内部分享的文章贴出来,分享给大家,同时也方便以后自己翻阅. 一. Lua简介 目标:Lua语言本身是用C语言来编写开发 ...

  2. lua游戏脚本实例源码_Redis Lua脚本中学教程(上)

    失踪人口回来啦! 有读者问我为什么这么久都没有出Redis Lua中学教程,表示村头厕所已经好久没有纸了.其实我早就要写这篇中学教程了,奈何最近太忙了,就一拖再拖,直到今天我终于又开始动笔了.忘记Lu ...

  3. lua游戏脚本实例源码_Lua脚本引擎教程(六):饥荒Lua脚本系统

    目录 饥荒的Lua逻辑层架构 迁移到Unity中使用Lua Lua擅长什么? 饥荒的Lua逻辑层架构 饥荒的整个逻辑层都是用Lua写的,并且把代码和艺术资产都开放给玩家,主要是供玩家中的mod制作者学 ...

  4. flash拼图游戏源码_在Flash中构建视频拼图游戏

    flash拼图游戏源码 Suppose you could convince your visitors to give their undivided attention to your compa ...

  5. unity项目源码_在Unity中使用protobuf

    Protocol Buffers (通常简称为protobuf) 是Google开发的一种格式,这种格式与开发语言无关.与运行平台无关,用于序列化结构数据,并且很容易扩展.这种格式可以用于通信协议.数 ...

  6. promise 浏览器实现的源码_【更新中】浏览器相关的汇总

    大家好,我是lz!这次是一篇记录文(总结的文章会持续更新,直到这章节结束,大家也可以关注我一起学习) 接下来会把浏览器,http 网络相关的内容进行一个汇总.这也是我面试最薄弱的一块. 1.  先从熟 ...

  7. 易语言c语言哪个做游戏脚本,易语言游戏脚本写法源码

    .版本 2 .支持库 spec .程序集 _启动窗口 .程序集变量 流程, 类_流程控制 .子程序 __启动窗口_创建完毕 .子程序 等待打开记事本, 文本型 .判断开始 (进程_名取ID (&quo ...

  8. mfc使用cef源代码实现_如何获得微信小游戏跳一跳源码以及源代码组合包括哪些...

    很多小游戏都是由源代码编写而成的,那大家知道源代码组合包括哪些吗?手机游戏源代码怎么使用的呢?还有,如何获得微信小游戏跳一跳源码?下面就由奇瑰网小编带大家来了解一下相关的内容吧. 源代码组合包括哪些 ...

  9. python小程序贪吃蛇_微信小程序实现的贪吃蛇游戏【附源码下载】

    本文实例讲述了微信小程序实现的贪吃蛇游戏.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: 界面布局 pages/snake/snake/snake.wxml: snake 得分 ...

最新文章

  1. onethink的熟悉
  2. 算法导论笔记:13-02红黑树插入
  3. 基于Java多线程操作文件案例分享
  4. 自编码器参数是否需要相称呢
  5. RAC环境在ASM上创建表空间出错ORA-569
  6. qt结构体嵌套结构体方法_9.2 C++结构体类型变量
  7. POJ 1655:Balancing Act
  8. Android开发笔记(一百一十四)发布工具
  9. 关于TCP/IP,必知必会的十个问题
  10. 盒模型知识点汇总(附实例、图解)
  11. Vmarker图片标注工具使用文档
  12. 计算机图片文档怎么着,【电脑知识】怎样将图片转换成word文档
  13. 谈下论坛和商城的开发项目
  14. java穷举密码_Java实现穷举密码登录FTP服务器
  15. xxx 用户不再sudoer 文件中 此事将被报告。
  16. php linux重新写路由器,通过php脚本重启路由器
  17. 蚂蚁借呗每月等额计算方式
  18. 修改 Zotero 参考文献格式
  19. (HEM/OHEM)hard negative(example)mining难例挖掘 与focal loss、GHM损失函数
  20. css为何不支持父元素选择器

热门文章

  1. dpdk-18.11网卡多队列RSS设置
  2. HDOJ 4433 Locker (数位DP)
  3. 房产科把用户申请表输入计算机后,系统首先检查申请表的合法性,房产管理系统.doc...
  4. VMware与主机文件共享
  5. Backtrack5常用的漏洞扫描工具
  6. ArchLinux 部署ShareLaTex并且配置中文支持
  7. i5 3470黑苹果efi_I5-4690台式机安装黑苹果实战(四)
  8. 湖南工业大学大学计算机教育网,湖南工业大学教务管理系统入口http://jwc.hut.edu.cn/...
  9. EduSoho教育周报(0729-0804
  10. 谁有惠普V3432 for 2000的声卡驱动,,救急啊!