Nginx整合OpenResty

DBC 175 0

介绍Nginx的扩展 整合框架OpenResty

什么是OpenResty, 为什么要用OpenResty?

温馨提示

由章亦春发起,是基于Ngnix和Lua的高性能web平台,内部集成精良的LUa库、第三方模块、依赖, 开发者可以方便搭建能够处理高并发、扩展性极高的动态web应用、web服务、动态网关。

OpenResty将Nginx核心、LuaJIT、许多有用的Lua库和Nginx第三方模块打包在一起

Nginx是C语言开发,如果要二次扩展是很麻烦的,而基于OpenResty,开发人员可以使用 Lua 编程语言对 Nginx 核心模块进行二次开发拓展

性能强大,OpenResty可以快速构造出1万以上并发连接响应的超高性能Web应用系统

  • 官网:http://openresty.org
  • 阿里、腾讯、新浪、酷狗音乐等都是 OpenResty 的深度用户
拓展

让Web 服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL, Memcaches 以及 Redis 等都进行一致的高性能响应。所以对于一些高性能的服务来说,可以直接使用 OpenResty 访问 Mysql或Redis等,而不需要通过第三方语言(PHP、Python、Ruby)等来访问数据库再返回,这大大提高了应用的性能

Lua脚本介绍

  • 官网:http://www.lua.org/start.html
    • Lua 由标准 C 编写而成,没有提供强大的库,但可以很容易的被 C/C++ 代码调用,也可以反过来调用 C/C++ 的函数。
      在应用程序中可以被广泛应用,不过Lua是一种脚本/动态语言,不适合业务逻辑比较重的场景,适合小巧的应用场景,代码行数保持在几十行到几千行。
    • LuaJIT 是采用 C 和汇编语言编写的 Lua 解释器与即时编译器
  • 什么是ngx_lua
    • ngx_lua是Nginx的一个模块,将Lua嵌入到Nginx中,从而可以使用Lua来编写脚本,部署到Nginx中运行
    • 即Nginx变成了一个Web容器;开发人员就可以使用Lua语言开发高性能Web应用了。
  • OpenResty提供了常用的ngx_lua开发模块
    • lua-resty-memcached
    • lua-resty-mysql
    • lua-resty-redis
    • lua-resty-dns
    • lua-resty-limit-traffic
      • 通过上述的模块,可以用来操作 mysql数据库、redis、memcached等,也可以自定义模块满足其他业务需求,
      • 很多经典的应用,比如开发缓存前置、数据过滤、API请求聚合、AB测试、灰度发布、降级、监控、限流、防火墙、黑白名单等

OpenResty和Lua相关环境准备

# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/
​
# update the yum index:
sudo yum check-update
​
sudo yum install openresty
​
#安装命令行工具
sudo yum install openresty-resty
​
# 列出所有 openresty 仓库里的软件包
sudo yum --disablerepo="*" --enablerepo="openresty" list available
​
#查看版本
resty -V

发表评论 取消回复
表情 图片 链接 代码

分享