网站首页 > 技术教程 正文
目录
- 概述
- lua介绍
- 第一个nginx lua脚本
- 用lua脚本实现IP访问限制
- 使用lua做nginx的rewrite跳转
- php7进阶到架构师相关阅读
概述
这是关于php进阶到架构之Nginx进阶学习的第八篇文章:nginx+lua实现nginx高级应用
- 第一篇:5分钟搞懂nginx的location匹配规则
- 第二篇:nginx rewrite规则详解
- 第三篇:5分钟上手nginx分流实战
- 第四篇:Nginx跨域配置
- 第五篇:深入理解浏览器缓存
- 第六篇:nginx缓存以及gzip配置
- 第七篇:nginx配置https
- 第八篇:nginx+lua实现nginx高级应用
lua介绍
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Nginx+Lua优势 - 充分的结合nginx的并发处理epool优势和Lua的轻量实现简单的功能高并发的场景
linux lua安装
yum install lua
运行lua
[root@gofor]# lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> print("hello world")
hello world
Nginx编译安装Lua模块
参考Nginx编译安装Lua模块【http://www.imooc.com/article/19597】
nginx调用lua模块指令
set_by_lua 设置nginx变量,可以实现复杂的复制逻辑
set_by_lua_file
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,但是会在最后输出一个换行符
ngx.header 输出响应头
第一个nginx lua脚本
location /lua {
default_type text/plain;
content_by_lua 'ngx.say("hello world")';
}
访问xxxx.com/lua,浏览器将输出hello world
用lua脚本实现IP访问限制
location @client{
proxy_pass http://www.gofor.com;
}
location ~ /test {
default_type text/html;
access_by_lua '
if ngx.var.remote_addr == "101.2.20.110" then
ngx.exit(ngx.HTTP_FORBIDDEN)
end
if ngx.var.remote_addr == "10.2.20.112" then
ngx.exec("@client")
end
';
}
控制经过access_by_lua 访问权限判断之后,才能访问
用户访问xxxx.com/test时,如果客户端IP地址是101.2.20.110直接提示禁止访问;
如果客户端IP地址10.2.20.112时访问@client的location定义的处理
location / {
access_by_lua '
local res = ngx.location.capture("/auth")
if res.status == ngx.HTTP_OK then
return
end
if res.status == ngx.HTTP_FORBIDDEN then
ngx.exit(res.status)
end
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
';
}
访问网站之前进行auth认证,并且作相应处理
使用lua做nginx的rewrite跳转
这个是先判断 check-pam接口的return的内容是不是spam,是的话,转跳到其他的页面
location / {
rewrite_by_lua '
local res = ngx.location.capture("/check-spam")
if res.body == "spam" then
ngx.redirect("/terms-of-use.html")
end
';
}
lua redirect的使用
return ngx.redirect("/foo")
return ngx.redirect("http://localhost:1984/foo", ngx.HTTP_MOVED_TEMPORARILY)
return ngx.redirect("/foo", 301)
返回302临时重定向 地址栏会显示跳转后的地址
php7进阶到架构师相关阅读
https://www.kancloud.cn/gofor/gofor
最后,欢迎大家留言补充,讨论~~~
猜你喜欢
- 2024-10-09 openresty代替nginx并使用lua扩展功能
- 2024-10-09 Redis弱事务性与Lua脚本原子性分析
- 2024-09-08 基于Nginx+lua的蓝绿发布系统(lvs与nginx)
- 2024-09-08 Go Web 框架 Gin 实践17—用 Nginx 部署 Go 应用
- 2024-09-08 一文看懂灰度发布——基于Nginx+Lua+Redis
- 2024-09-08 Lua 基础入门(lua经典详细入门教程中文pdf)
- 2024-09-08 Redis中使用Lua脚本来实现并发下的原子操作
- 2024-09-08 运维篇—基于Nginx+Lua实现的灰度发布
- 2024-09-08 Nginx+Lua+Redis实现高性能缓存数据读取
- 2024-09-08 OpenResty实战-Lua入门-Lua模块(openresty教程)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)