1、Lua及基础语法

Nginx与Lua环境

场景:用Nginx结合Lua实现代码的灰度发布

1、Lua

是一个简洁、轻量、可扩展的脚本语言

2、Nginx+Lua优势

充分的结合Nginx的并发处理epoll优势和Lua的轻量

实现简单的功能切高并发的场景。

3、Lua的基础语法

1、运行
[root@web-01 ~]# lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> print("Hi I'm lewen")
Hi I'm lewen[root@web-01 ~]# lua ./lewen.lua
Hi I'm lewen2、注释- 行注释
--[[
块注释
--]]3、变量
a = 'alo\n123"'
a = "alo\n123\""
a = '\97lo\10\04923"'a = [[alo123]]布尔类型只有nil和false, false是数字0,' ' 空字符串('\0')都是truelua中的变量如果没有特殊说明,全是全局变量4、while循环语句
sum = 0
num = 1
while num <= 100 dosum = sum + numnum = num + 1
end
print("sum=",sum)Lua没有 ++ 或是 += 这样的操作5、for循环语句
sum=0
for i=1,100 do
sum=sum+i
end
print(sum)6、if-else判断语句a = 100
--[ 检查布尔条件 --]
if( a == 10 )
then--[ 如果条件为 true 打印以下信息 --]print("a 的值为 10" )
elseif( a == 20 )
then--[ if else if 条件为 true 时打印以下信息 --]print("a 的值为 20" )
elseif( a == 30 )
then--[ if else if condition 条件为 true 时打印以下信息 --]print("a 的值为 30" )
else--[ 以上条件语句没有一个为 true 时打印以下信息 --]print("没有匹配 a 的值" )
end
print("a 的真实值为: ", a )6、if-else判断语句"~="是不等于
字符串的拼接操作符".."
io库的分别从stdin和stdout读写的read和write函数

View Code

教程 https://www.runoob.com/lua/lua-tutorial.html

2、Nginx+Lua环境部署

参考https://blog.csdn.net/qq_38974634/article/details/81625075

1、LuaJIT

wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
tar -zxvf  LuaJIT-2.0.2.tar.gz
cd LuaJIT-2.0.2
make install PREFIX=/usr/local/LuaJIT/etc/profile 文件中加入环境变量
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0

2、ngx_devel_kit和lua-nginx-module

cd /opt/download
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz
分别解压,等待被添加安装

3、重新编译Nginx

下载nginx的源码包cd /data
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar -zxvf nginx-1.12.1.tar.gz;cd nginx-1.12.1安装依赖yum install openssl openssl-devel -yyum install zlib zlib-devel -yyum install pcre-devel –y编译./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-module=/data/ngx_devel_kit-0.3.0 --add-module=/data/lua-nginx-module-0.10.9rc7make && make installecho "/usr/local/lib" >> /etc/ld.so.confldconfig
执行此 命令后,nginx -V 看下参数

3、测试Lua

# cd /etc/nginx/conf.d/default.conf 加入下面的locationserver {listen       80;server_name web01.fadewalk.com;location /lua {set $test "hello,world";content_by_lua 'ngx.header.content_type="text/plain"ngx.say(ngx.var.test)';}}

4、Nginx调用lua模块指令

Nginx的可插拔模块化加载执行,共11个处理阶段

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

set_by_lua_file

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

access_by_lua_file

content_by_lua    内容处理器,接收请求处理并输出响应

content_by_lua_file

ngx.var     nginx变量

ngx.req.get headers 获取请求头

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

ngx.redirect    重定向

ngx.print    输出响应内容体

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

ngx.header 输出响应头

Nginx与Lua开发相关推荐

  1. 安装OpenResty(Nginx+Lua)开发环境

    首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用.借助于Nginx的事件驱动模型 ...

  2. 第二章 OpenResty(Nginx+Lua)开发入门

    Nginx入门 本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: nginx启动.关闭.重启 http://www.cnblogs.com/derekchen/archi ...

  3. 第一章 安装OpenResty(Nginx+Lua)开发环境

    首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用.借助于Nginx的事件驱动模型 ...

  4. 安装OpenResty,实现分发层、应用层nginx+lua开发(附加问题:bad argument #2 to ‘set_keepalive‘ (number expected, got nil)

    1. 安装OpenResty 1.1 在 /usr 目录下创建servers目录,并进入该目录执行 yum install -y readline-devel pcre-devel openssl-d ...

  5. linux下lua开发环境安装

    我前面我们介绍了nginx+lua环境的搭建,在此我们再来了解下lua开发环境的安装. 目前lua版本已经更新到lua5.3,但是我们在此安装lua5.1,因为5.1运行了好多年,有好多模块都是基于此 ...

  6. 如何配置一套优雅的Lua开发环境

    讨论话题 何为优雅的开发环境 如何部署(本文讨论在MacOSX平台,其他平台也一样适用) 优雅的Lua开发环境 优雅的Lua开发环境至少包含以下几点: 安装适合需求的最新稳定版Lua 安装合适的Lua ...

  7. CentOS7下Nginx 安装 Lua 支持

    Nginx 支持 Lua 需要安装 lua-nginx-module 模块,一般常用有 2 种方法: 1.编译 Nginx 的时候带上 lua-nginx-module 模块一起编译 2.使用 Ope ...

  8. 一、ESP8266入门(基于LUA开发)

    序 一入坑便停不下来...  还挺有意思的哈,233,,,,  资料杂,自己一个一个去找确实浪费了不少时间,而且大多还都是英文的,需要硬着头皮看.  这次实践入门,更是对英语的重要确信无疑.Githu ...

  9. win7下搭建nginx+php的开发环境

    win7下搭建nginx+php的开发环境,需要的朋友可以参考下 一.下载相关软件 nginx下载:http://nginx.org/en/download.html nginx常见异常:http:/ ...

最新文章

  1. 最新!2022中国大学排名发布
  2. POJ 1459--最大流算法
  3. 结对项目——电梯调度算法的实现和测试
  4. linux hive创建数据库失败,Hive本地模式安装及遇到的问题和解决方案
  5. [CODEVS 1301] 任务分配
  6. 利用存储函数,查询某个员工的年薪
  7. ES5-11原型与原型链深入、对象继承
  8. 为何你仍是一名社畜码农?
  9. UVA 583 素数打表(线性)
  10. c# 定义operator运算符
  11. 一种新的人机交流方式——sound ware 声件
  12. WinPhone 开发(4)-----快速恢复应用程序上一次的会话状态
  13. 中国·哈尔滨国际友好城市冰雪汽车挑战赛开赛
  14. php 到处excel 乱码,php 导出excel乱码怎么办
  15. 深度学习识别手写字体数字
  16. 【亲测可行】SVN的添加忽略
  17. 第一个微信小程序的诞生
  18. C#/VB.NET 读取条码类型及条码在图片中的坐标位置
  19. 项目需求分析与建议 NABCD模型
  20. 怎么设置ppt页面的长度和宽度_ppt幻灯片的尺寸大小要设置成多少厘米的,但是我的页面设置的大小单位是英寸,怎么设置...

热门文章

  1. python导出xlsx_使用python库xlsxwriter库来输出各种xlsx文件
  2. intellij idea操作maven时控制台中文乱码
  3. 我常用的10个Python实用小Trick
  4. misc高阶 攻防世界_攻防世界 Misc 进阶题(一)
  5. mfc从文件中读取数据_Java中Transient关键字,一点课堂(多岸学院)
  6. 深度学习-Tensorflow2.2-卷积神经网络{3}-卷积神经网络CNN基础-11
  7. 计算机视觉摔倒检测,基于计算机视觉的室内跌倒检测
  8. 3dmax挤出制作窗花_「教程」3DMAX制作藤编家具模型,超实用教程,收藏备用
  9. 007.androidUI开发进阶(基础--案例) .
  10. 线段树教做人系列(3) HDU 4913