首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Web服务器-Nginx服务器之OpenResty(Lua)

Web服务器-Nginx服务器之OpenResty(Lua)

作者头像
运维小路
发布2025-04-16 14:49:34
发布2025-04-16 14:49:34
23100
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。

我们经过前面的介绍,虽然介绍了很功能,但是还是有不少的功能需要借助第三方模块,而其中有一个模块:ngx_http_lua_module,我们可以通过他实现很多功能,因为他一门脚本语言。

Lua这个模块通过yum安装默认是不包含在内,如果需要则需要通过编译安装或者通过动态加载方式加载进去(我原本打算写一篇文章来介绍如何动态加载Lua模块的,结果尝试好几天晚上都失败)。所以本小节我们介绍了一个集成了Lua的Nginx版本:OpenResty。

Lua介绍

Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译、运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。

OpenResty介绍

OpenResty® 是一个基于 Nginx 与 LuaJIT 的高性能 Web 平台,由中国人章亦春(Agentzh)创建。它集成了大量的 Lua 库、第三方模块以及大多数依赖项,使得开发者可以方便地构建高性能的 Web 应用程序和服务。以下是 OpenResty 的一些主要特点和组成部分:

主要特点

  1. 基于 Nginx: OpenResty 基于 Nginx,继承了 Nginx 的高性能、高并发和低资源消耗的特点。
  2. LuaJIT 集成: OpenResty 集成了 LuaJIT,这是一个高性能的 Lua VM,它提供了快速的 Lua 脚本执行能力。
  3. 丰富的 Lua 库: OpenResty 提供了大量的 Lua 库,这些库可以直接在 Nginx 配置文件中使用,用于处理 HTTP 请求、访问数据库、缓存等。
  4. 高度可扩展: 开发者可以使用 Lua 脚本编写业务逻辑,这使得 OpenResty 非常灵活和可扩展。
  5. 非阻塞 I/O: OpenResty 支持非阻塞 I/O,可以处理成千上万的并发连接,适合构建高性能的 Web 服务。
  6. 负载均衡和反向代理: 继承了 Nginx 的负载均衡和反向代理功能,可以用于构建高可用的服务架构。

OpenResty部署

代码语言:javascript
代码运行次数:0
运行
复制
#官方网站 
https://openresty.org/cn/
代码语言:javascript
代码运行次数:0
运行
复制
# add the yum repo:
wget https://openresty.org/package/rhel/openresty.repo
mv openresty.repo /etc/yum.repos.d/openresty.repo
# update the yum index:
yum check-update
#安装openresty 
yum install -y openresty
代码语言:javascript
代码运行次数:0
运行
复制
#启动openrestry 
systemctl start openresty
systemctl enable openresty

可以看出来这个启动命令实际还是Nginx,只是他封装成了openresty。Nginx目录里面的内容和编译安装Nginx基本一样,上层目录基本上就是Lua及相关信息。

添加Lua测试

代码语言:javascript
代码运行次数:0
运行
复制
#由于默认配置没有conf.d 的目录以下内容添加在nginx.conf
#重启以后测试访问 
 server {
        listen 8080;
        location / {
            default_type text/html;
            content_by_lua_block {
                ngx.say("<p>hello, world</p>")
            }
        }
    }
代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost conf]# vi nginx.conf
[root@localhost conf]# openresty -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful
[root@localhost conf]# openresty -s reload
[root@localhost conf]# curl localhost:8080
<p>hello, world</p>
[root@localhost conf]# 

由于我并没有Lua编写经验,所以我这里就不演示具体的应用,这里只是提供介绍,让大家知道有这样一个产品,可以实现哪些功能。有应用需求,可以自己研究。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要特点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档