2.OpenResty系列之Lua入门

1. Lua简介

Lua是一种轻量级的、高效的脚本编程语言,最初由巴西里约热内卢天主教大学的一个研究小组开发和发布。Lua的设计目标是提供一个简单、可嵌入、可扩展的脚本语言,官方实现完全采用 ANSI C 编写,能以 C 程序库的形式嵌入到其他应用程序中。

作为一门过程型动态语言,Lua 有着如下的特性:

  • 简洁和轻量级:Lua的语法简单、清晰,具备较小的代码库和内存占用,使得它非常适合嵌入式系统和资源受限的环境中使用。
  • 高效性:Lua的解释器是基于虚拟机技术构建的,执行速度较快。它采用了一系列优化措施,如即时编译(just-in-time compilation)和轻量级协程(lightweight coroutines),以提高执行效率和并发性能。
  • 可嵌入性:Lua被设计成可嵌入到其他应用程序中使用。它的解释器以库的形式提供,可以轻松地与其他编程语言(如C/C++)集成,从而为应用程序提供脚本扩展功能。
  • 可扩展性:Lua提供了强大的扩展机制,允许开发者通过编写C/C++扩展模块来扩展Lua的功能。这使得Lua可以与其他编程语言交互,并集成现有的代码库。
  • 动态类型:Lua是一种动态类型语言,变量的类型在运行时确定。这使得它更加灵活,可以根据需要进行动态类型转换和操作。
  • 自动内存管理和垃圾回收:Lua具有自动的内存管理和垃圾回收机制,开发者无需手动管理内存,减轻了程序员的负担。
  • 强大的表格(table):Lua的表格是一种通用的数据结构,可以用来表示数组、字典和对象等。它具有灵活的访问和操作方式,是Lua中重要的数据结构之一。
  • 多范式编程:Lua支持多种编程范式,包括过程式编程、函数式编程和面向对象编程。开发者可以根据需求选择适当的编程风格
2. 环境搭建
  • 在https://openresty.org/cn/download.html下载对应平台版本
  • IDEA中安装插件EmmyLua
3. 在OpenResty中使用Lua

在OpenResty中,您可以通过编写Lua代码来扩展Nginx的功能。以下是一些常见的用法:

  • 处理HTTP请求:您可以使用Lua来处理HTTP请求,并根据请求的内容进行相应的逻辑处理。例如,您可以通过编写Lua函数来解析请求参数、验证用户身份等。
  • 修改请求和响应:使用Lua,您可以修改HTTP请求和响应的内容。您可以通过编写Lua代码来修改请求头、添加响应头、重定向请求等。
  • 缓存和代理:通过编写Lua代码,您可以实现高效的缓存和代理功能。您可以使用Lua脚本来控制缓存的策略、更新缓存内容等。
4. 应用示例

我们找到刚安装的openresty-1.21.4.2-win64\conf\nginx.conf, 添加对hello的响应后,点击nginx.exe启动即可。

# nginx.confhttp {server {listen 90;location /hello {default_type 'text/plain';content_by_lua_block {ngx.say("Hello, OpenResty!")}}}
}

访问结果如图,如果无法访问则进程杀死nginx服务后,执行start nginx即可


欢迎关注公众号算法小生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/169194.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客、赛码网OJ调试(全)

现在无论开发还是测试,面试的时候都需要考察代码能力。 从测试的职业发展来看,现在市场上对于纯功能测试的需求很少,招聘方均要求面试者一方面具备测试基础能力,也要求有点代码能力。 对于测试来说,除了测试开发&#…

Matplotlib绘图一网打尽【持续更新ing】

2 绘制扇形图 绘制一个展示男女乘客比例的扇形图 得出男女的具体数字 sex_per df["Sex"].value_counts() sex_per # 把画图的包导入进来 import matplotlib.pyplot as plt# 这种绘图方式主要用于有多个子图以及复杂的图形布局的时候。fig,ax plt.subplots()# pl…

creo6.0教程之旋转,扫描

目录 一、旋转:二、扫描: 一、旋转: 案例1:旋转一个球: 任意一个平面绘制草图: 确定草图后,然后退出草图,点击旋转: 案例2:旋转一个杯子雏形: …

【入门Flink】- 09Flink水位线Watermark

在窗口的处理过程中,基于数据的时间戳,自定义一个“逻辑时钟”。这个时钟的时间不会自动流逝;它的时间进展,就是靠着新到数据的时间戳来推动的。 什么是水位线 用来衡量事件时间进展的标记,就被称作“水位线”&#x…

Nginx(五)

负载均衡 官网文档 Using nginx as HTTP load balancer nginx中实现反向代理的方式 HTTP:通过nginx配置反向代理到后端服务器,nginx将接收到的HTTP请求转发给后端服务器。使用 proxy_pass 命令 HTTPS:通过nginx配置反向代理到后端服务器&…

【操作系统面试题(32道)与面试Linux命令大全】

文章目录 操作系统面试题引论1.什么是操作系统?2.操作系统主要有哪些功能? 操作系统结构3.什么是内核?4.什么是用户态和内核态?5.用户态和内核态是如何切换的? 进程和线程6.并行和并发有什么区别?7.什么是进…

小白学安全-KunLun-M静态白盒扫描工具

一、KunLun-M简介 KunLun-M是一个完全开源的静态白盒扫描工具,支持PHP、JavaScript的语义扫描,基础安全、组件安全扫描,Chrome Ext\Solidity的基础扫描。开源地址:https://github.com/LoRexxar/Kunlun-M Cobra是一款源代码安全审计…

数据拟合、参数估计、插值等数据处理算法

介绍 数据拟合: 数据拟合是通过选择或构建合适的函数模型,将给定的数据点与该函数模型进行匹配和拟合的过程。常见的数据拟合方法包括最小二乘法和非线性最小二乘法。最小二乘法通过最小化实际数据与拟合函数的残差平方和来求解最优拟合参数。非线性最小…

Python之函数进阶-nonlocal和LEGB

Python之函数进阶-nonlocal和LEGB nonlocal语句 nonlocal:将变量标记为不在本地作用域定义,而是在上级的某一级局部作用域中定义,但不能是全局作用域中定义。 函数的销毁 定义一个函数就是生成一个函数对象,函数名指向的就是函数对象。可…

axios请求的问题

本来不想记录,但是实在没有办法,因为总是会出现post请求,后台接收不到数据的情况,还是记录一下如何的解决的比较好。 但是我使用export const addPsiPurOrder data > request.post(/psi/psiPurOrder/add, data); 下面是封装的代码。后台接…

幼教早教内容付费预约小程序的效果如何

很多家庭对孩子的重视程度很高,尤其加之如今激烈竞争的市场,孩子从小便需要各种提前教育,而相关教培企业也比较多,基于服务高需求度,线下教育与线上课程教育同样重要。 在实际经营中,幼教早教培训机构也面…

“富婆”通讯录——让你少奋斗50年

文章目录 一、项目需求分析二、通讯录各功能实现思路及代码准备工作2.1、打印一个菜单,提供用户选择功能2.2、添加联系人信息2.3、删除联系人信息2.4、查询联系人信息2.5、修改联系人信息2.6、显示所有联系人信息2.7、对所有联系人信息进行排序整理2.8、删除所有联系…