介绍
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.gztar -zxvf openresty-1.19.9.1.tar.gzcd 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/openrestymkdir logs confvim 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`
