介绍
OpenResty是一个基于Nginx与Lua的高性能web平台,其内部继承了大量精良的Lua库、第三方模块以及大多数依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。
简单来说,OpenResty就是一个封装了Nginx且集成了Lua脚本的应用程序。
OpenResty能做什么?
我们可以把一些不太复杂的业务可以移到nginx层,从而提高我们的吞吐量,解决一些性能上的瓶颈。
例如,在nginx这一层做简单的限流、黑白名单,缓存之类的业务复杂性不是太强的工作,从而增加我们的吞吐率,也可以再nginx这一层过滤掉一些垃圾流量,从而让后端只需要更加专注于业务。
安装
下载及解压
wget https://openresty.org/download/openresty-1.19.9.1.tar.gz
tar -zxvf openresty-1.19.9.1.tar.gz
cd openresty-1.19.9.1
编译
在 OpenResty 1.5.8.1 版本之前, OpenResty 默认使用标准 Lua 5.1 解释器。所以对于老版本, 你需要显式地加入—with-luajit 编译选项(1.5.8.1 以后的版本已默认开启)来启用 LuaJIT 组件。
# 先安装各类环境依赖
yum install -y readline-devel pcre-devel openssl-devel perl gcc
# 通过命令查看configure有哪些可选参数
./configure --help
# 在这里,我就指定一下安装目录即可,其实也可以不指定,默认就是安装到我下面输入的目录中
./configure --prefix=/usr/local/openresty
# make -j2 利用多核的优势,-j2 表示利用两个CPU核心进行编译
make -j2 && make install
测试
推荐直接使用 openresty下的nginx/conf中的配置,如果在其他目录进行配置,防止每次都需要加上 -p 参数
下面的相关配置,仅是方便测试。
运行openresty与nginx雷同,上面说过,openresty相当于是将nginx封装了一遍,然后自带lua及各类lua模块。
# 编写nginx配置
cd /usr/local/openresty
mkdir logs conf
vim conf/nginx.conf
# 内容如下,与nginx的配置是一样的
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
default_type text/html;
content_by_lua_block {
ngx.say("hello, world")
}
}
}
}
# 启动ngxin(openrestry)
# 这里为何要用 -p `pwd` 参数?
# -p `pwd` 表示指明nginx启动时的配置目录
# 我们在nginx.conf写相关配置时,如果用到相对路径,会使用-p参数指定的目录为基准目录
/usr/local/openresty/nginx/sbin/nginx -p `pwd` -c /usr/local/openresty/conf/nginx.conf
# 访问测试
curl http://localhost
# 输出
hello, world
# 如果要重启也需要指定 -p参数
./nginx/sbin/nginx -s reload -p `pwd`