从 Nginx 迁移到 Openresty
从 Nginx 迁移到 Openresty
什么是OpenResty? 有什么作用?
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
简而言之OpenResty就是整合了Nginx和lua的框架, 并内置了lua;
为什么要换成 Openresty
Lua 脚本支持:
OpenResty 内置了 LuaJIT(Lua 的即时编译器),允许用户直接在 Nginx 配置文件中使用 Lua 脚本。这使得可以实现更复杂的业务逻辑,而无需依赖外部脚本。Lua 脚本的灵活性和简洁性有助于快速开发 Web 应用和服务,尤其是在需要动态处理 HTTP 请求和响应时。
更高的开发效率:
Lua 脚本相对容易学习和使用,可以快速构建各种功能,减少开发时间。
Web 应用开发框架:
它提供了许多内置的库和模块,可帮助开发者构建完整的 Web 应用程序,而不仅仅是作为一个 Web 服务器。
流式处理:
支持流式处理 HTTP 请求和响应,能够处理大文件上传和下载,以及其他需要流式数据处理的场景。
性能优化:
虽然引入了 LuaJIT 可能会带来一些性能开销,但在设计时已考虑性能优化,在许多场景下,特别是业务逻辑复杂的情况下,性能损失是可控的,并且在某些情况下可能会比传统方式更高效。
扩展性:
基于 Nginx,继承了其优秀的模块化设计,同时提供了更多扩展可能性,社区也贡献了丰富的第三方模块。
API 网关能力:
可以作为 API 网关使用,例如著名的 Kong API 网关就是基于 OpenResty 构建的,能够提供 API 管理、请求代理等功能。
易于维护:
配置和使用相对统一,可减少维护不同语言编写的脚本和服务的复杂性,使整个系统更易于管理。
然而,是否选择将 Nginx 换成 OpenResty 应根据具体的项目需求和场景来确定。如果项目需要更高级的 Web 应用开发能力、复杂的业务逻辑处理,或者对 API 网关等功能有需求,那么 OpenResty 可能是更好的选择;如果项目对性能要求极高,且业务逻辑相对简单,Nginx 可能已经能够满足需求。在做出决策之前,建议对两者进行详细的评估和测试。
替换成 Openresty
先备份 nginx 配置文件
|
|
查找“ –conf-path=/etc/nginx/nginx.conf” ,记住配置文件的目录
|
|
先卸载 nginx
|
|
安装 openresty
安装前置条件
|
|
import our GPG key:
查看 ubunt 版本
|
|
For ubuntu 16 ~ 20
|
|
For ubuntu 22
|
|
添加 official APT repository.
For x86_64 or amd64 systems:
- For ubuntu 16 ~ 20
|
|
- For ubuntu 22 or above
|
|
And for arm64 or aarch64 systems:
- For ubuntu 16 ~ 20
|
|
- For ubuntu 22 or above
|
|
update the APT index:
|
|
安装 openresty
|
|
启动 openresty
恢复 nginx 配置
|
|
修改 nginx.conf
|
|
在 http {} 内增加以下:
|
|
启动 openresty
|
|