官网:https://openresty.org/cn/

介绍

OpenResty是一个基于Nginx与Lua的高性能web平台,其内部继承了大量精良的Lua库、第三方模块以及大多数依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。
简单来说,OpenResty就是一个封装了Nginx且集成了Lua脚本的应用程序。

OpenResty能做什么?

我们可以把一些不太复杂的业务可以移到nginx层,从而提高我们的吞吐量,解决一些性能上的瓶颈。
例如,在nginx这一层做简单的限流、黑白名单,缓存之类的业务复杂性不是太强的工作,从而增加我们的吞吐率,也可以再nginx这一层过滤掉一些垃圾流量,从而让后端只需要更加专注于业务。

安装

下载地址:https://openresty.org/cn/download.html

下载及解压

  1. wget https://openresty.org/download/openresty-1.19.9.1.tar.gz
  2. tar -zxvf openresty-1.19.9.1.tar.gz
  3. cd openresty-1.19.9.1

编译

在 OpenResty 1.5.8.1 版本之前, OpenResty 默认使用标准 Lua 5.1 解释器。所以对于老版本, 你需要显式地加入—with-luajit 编译选项(1.5.8.1 以后的版本已默认开启)来启用 LuaJIT 组件。

  1. # 先安装各类环境依赖
  2. yum install -y readline-devel pcre-devel openssl-devel perl gcc
  3. # 通过命令查看configure有哪些可选参数
  4. ./configure --help
  5. # 在这里,我就指定一下安装目录即可,其实也可以不指定,默认就是安装到我下面输入的目录中
  6. ./configure --prefix=/usr/local/openresty
  7. # make -j2 利用多核的优势,-j2 表示利用两个CPU核心进行编译
  8. make -j2 && make install

测试

推荐直接使用 openresty下的nginx/conf中的配置,如果在其他目录进行配置,防止每次都需要加上 -p 参数
下面的相关配置,仅是方便测试。
运行openresty与nginx雷同,上面说过,openresty相当于是将nginx封装了一遍,然后自带lua及各类lua模块。

  1. # 编写nginx配置
  2. cd /usr/local/openresty
  3. mkdir logs conf
  4. vim conf/nginx.conf
  5. # 内容如下,与nginx的配置是一样的
  6. worker_processes 1;
  7. error_log logs/error.log;
  8. events {
  9. worker_connections 1024;
  10. }
  11. http {
  12. server {
  13. listen 80;
  14. location / {
  15. default_type text/html;
  16. content_by_lua_block {
  17. ngx.say("hello, world")
  18. }
  19. }
  20. }
  21. }
  22. # 启动ngxin(openrestry)
  23. # 这里为何要用 -p `pwd` 参数?
  24. # -p `pwd` 表示指明nginx启动时的配置目录
  25. # 我们在nginx.conf写相关配置时,如果用到相对路径,会使用-p参数指定的目录为基准目录
  26. /usr/local/openresty/nginx/sbin/nginx -p `pwd` -c /usr/local/openresty/conf/nginx.conf
  27. # 访问测试
  28. curl http://localhost
  29. # 输出
  30. hello, world
  31. # 如果要重启也需要指定 -p参数
  32. ./nginx/sbin/nginx -s reload -p `pwd`