概述
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
组成
OpenResty并不是个“单块”(Monolithic)的程序,而是由众多设计精良的组件集合而成的,这些组件可以灵活组装或拆卸,共同搭建起了完整的高性能服务器开发环境。
核心组件:
- Nginx
- LuaJit:Lua语言解释器
- ngx_lua:处理http协议,让lua程序嵌入在Nginx里运行
- stream_lua:处理tcp/udp协议
安装
采用源码安装。
安装依赖
yum -y install readline-devel pcre-devel openssl-devel gcc gcc-c++ postgresql-devel geoip-devel
下载解压
cd /opt
wget https://openresty.org/download/openresty-1.19.3.1.tar.gz
tar zxf openresty-1.19.3.1.tar.gz
编译安装
cd openresty-1.19.3.1
# 若不指定路径,默认会安装在/usr/local/openresty
./configure --prefix=/opt/openresty
--with-luajit
--without-http_redis2_module
--with-http_iconv_module
--with-http_postgres_module
--with-http_ssl_module
--with-http_v2_module
--with-http_realip_module
--with-http_geoip_module
--with-http_gzip_static_module
--with-http_stub_status_module
# 根据实际核心数配置
make -j8 && make install
验证
新增一个location:
location /hello_lua {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
启动nginx
/opt/openresty/bin/openresty
验证
[root@test ~]# curl 127.0.0.1/hello_lua
hello, lua