• 简介

      OpenResty又被称为ngx_openresty,基于nginx核心和许多第三方模块组成,默认继承了Lua开发环境,使得nginx可以做为一个web服务使用

  • 原理

       Nginx采用master-worker模型,也就是一个master进程管理多个worker进程,基本的时间处理都放在worker进程中,master进程负责全局初始化以及对worker进程的管理,OpenResty利用           nginx的非阻塞IO模型,实现高性能web应用程序

  • 安装
  1. 安装依赖

         依赖pcre做正则引擎,openssl做安全引擎

1 yum install -y gcc gcc-c++ zlib-devel pcre pcre-devel openssl openssl-devel readline-devel

  2.  版本

  openresty-1.15.8.2目前为最高版本,下载地址为:http://openresty.org/cn/download.html

  3. 第三方模块介绍

  openresty集成的第三方模块放在openresty-1.15.8.2/build  目录下,默认除了lua相关的其他模块,编译安装时会自动安装

       

 1 [root@localhost build]# pwd
 2 /root/qin/openresty-1.15.8.2/build
 3 [root@localhost build]# ll
 4 total 256
 5 drwxrwxr-x.  5 mysql 1003    117 Aug 29 13:33 array-var-nginx-module-0.05
 6 drwxrwxr-x.  6 mysql 1003    162 Aug 29 13:33 drizzle-nginx-module-0.1.11
 7 drwxrwxr-x.  5 mysql 1003    151 Aug 29 13:33 echo-nginx-module-0.61
 8 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 encrypted-session-nginx-module-0.08
 9 drwxrwxr-x.  5 mysql 1003     95 Aug 29 13:33 form-input-nginx-module-0.12
10 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 headers-more-nginx-module-0.33
11 drwxrwxr-x.  5 mysql 1003     95 Aug 29 13:33 iconv-nginx-module-0.14
12 -rwxrwxr-x.  1 mysql 1003   1502 Aug 29 13:32 install
13 drwxrwxr-x.  4 mysql 1003   4096 Dec 18 15:11 lua-cjson-2.1.0.7
14 drwxrwxr-x.  7 mysql 1003    146 Aug 29 13:33 LuaJIT-2.1-20190507
15 drwxr-xr-x.  3 root  root     18 Dec 18 15:10 luajit-root
16 drwxrwxr-x.  4 mysql 1003     91 Dec 18 15:11 lua-rds-parser-0.06
17 drwxrwxr-x.  3 mysql 1003    167 Dec 18 15:11 lua-redis-parser-0.13
18 drwxrwxr-x.  5 mysql 1003    176 Aug 29 13:33 lua-resty-core-0.1.17
19 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-dns-0.21
20 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-limit-traffic-0.06
21 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-lock-0.08
22 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-lrucache-0.09
23 drwxrwxr-x.  4 mysql 1003    107 Aug 29 13:33 lua-resty-memcached-0.14
24 drwxrwxr-x.  5 mysql 1003    157 Aug 29 13:33 lua-resty-mysql-0.21
25 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-redis-0.27
26 drwxrwxr-x.  4 mysql 1003    104 Aug 29 13:33 lua-resty-shell-0.02
27 drwxrwxr-x.  4 mysql 1003    173 Dec 18 15:11 lua-resty-signal-0.02
28 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-string-0.11
29 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-upload-0.10
30 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-upstream-healthcheck-0.06
31 drwxrwxr-x.  4 mysql 1003    142 Aug 29 13:33 lua-resty-websocket-0.07
32 drwxrwxr-x.  3 mysql 1003     51 Aug 29 13:33 lua-tablepool-0.01
33 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 memc-nginx-module-0.19
34 drwxrwxr-x.  9 mysql 1003    139 Dec 18 15:10 nginx-1.15.8
35 -rw-rw-r--.  1 mysql 1003  14799 Aug 29 13:32 nginx-no_pool.patch
36 drwxr-xr-x.  6 root  root   4096 Dec 18 14:42 nginx_upstream_check_module-0.3.0
37 drwxr-xr-x.  3 root  root    123 Dec 18 14:42 ngx_cache_purge-2.3
38 drwxrwxr-x.  4 mysql 1003    127 Apr  3  2015 ngx_coolkit-0.2
39 drwxrwxr-x.  9 mysql 1003    204 Aug 29 13:33 ngx_devel_kit-0.3.1rc1
40 drwxrwxr-x. 10 mysql 1003    202 Aug 29 13:33 ngx_lua-0.10.15
41 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 ngx_lua_upstream-0.07
42 drwxrwxr-x.  4 mysql 1003    113 Aug 29 13:33 ngx_postgres-1.0
43 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 ngx_stream_lua-0.0.7
44 drwxrwxr-x.  5 mysql 1003     90 Aug 29 13:33 opm-0.0.5
45 drwxrwxr-x. 47 mysql 1003   4096 Aug 29 13:33 pod
46 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 rds-csv-nginx-module-0.09
47 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 rds-json-nginx-module-0.15
48 drwxrwxr-x.  6 mysql 1003    163 Aug 29 13:33 redis2-nginx-module-0.15
49 drwxr-xr-x.  3 mysql 1003    154 Aug 29 13:32 redis-nginx-module-0.3.7
50 drwxrwxr-x.  4 mysql 1003    110 Aug 29 13:33 resty-cli-0.24
51 -rw-rw-r--.  1 mysql 1003 226755 Aug 29 13:33 resty.index
52 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 set-misc-nginx-module-0.32
53 drwxrwxr-x.  5 mysql 1003    132 Aug 29 13:33 srcache-nginx-module-0.31
54 drwxrwxr-x.  5 mysql 1003    136 Aug 29 13:33 xss-nginx-module-0.06

   说明:

     内置模块  --with-<module>

  --with-cc-opt=-O2
      #编译器优化

  --with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib -ljemalloc
  #添加luajit的的lib目录,并使用ljemalloc来管理内存,性能可提高30%

  --user=www --group=www
  #用户,组,不解释

  --with-http_stub_status_module
  #监控模块,不解释

  --with-http_v2_module
  #使Nginx支持http2,由于http2是趋势,所以这里加上,方便以后扩展。

  --with-http_ssl_module
  #SSL不解释

  --with-ipv6
  #支持ipv6,由于ipv6是趋势,所以这里加上,方便以后扩展

  --with-http_gzip_static_module
  #gzip不解释

  --with-http_realip_module
  #realip,必备模块,取用户真实ip模块

  --with-http_flv_module
  #支持flv流媒体的各项扩展参数

  --with-pcre=/root/oneinstack/src/openresty-1.9.15.1/../pcre-8.38
  #加载pcre,不解释

  --with-pcre-jit
  #加载pcre模块

  第三方模块   --add-module

  --add-module=../redis2-nginx-module
  #使 nginx 可以直接读 redis 中缓存的文件内容

  --add-module=../redis2-nginx-module

  #是一个支持 Redis 2.0 协议的 Nginx upstream 模块,它可以让 Nginx 以非阻塞方式直接防问远方的 Redis 服务,同时支持 TCP 协议和 Unix Domain Socket 模式,并且可以启用强大的   Redis 连接池功能

  --add-module=../ngx_devel_kit-0.3.0
  #nginx开发包

  --add-module=../echo-nginx-module-0.59
  #可以使Nginx输出一些简单的文字

  --add-module=../xss-nginx-module-0.05
  #缓存有callback的数据

  --add-module=../ngx_coolkit-0.2rc3
  #nginx的插件集合,方便扩展

  --add-module=../set-misc-nginx-module-0.30
  #set-misc-nginx-module模块是标准的HttpRewriteModule指令的扩展,提供更多的功能,
  #如URI转义与非转义、JSON引述、Hexadecimal/MD5/SHA1/Base32/Base64编码与解码、随机数等等。

  --add-module=../form-input-nginx-module-0.12
  #NGINX模块读取HTTP POST和PUT

  --add-module=../encrypted-session-nginx-module-0.05
  #加密cookie

  --add-module=../srcache-nginx-module-0.31
  #srcache是为location增加了透明的基于subrequest的缓存层,与其它模块配合,可实现高效缓存

  --add-module=../ngx_lua-0.10.5
  #nginx lua模块,不解释

  --add-module=../ngx_lua_upstream-0.05
  #Nginx LUA API

  --add-module=../headers-more-nginx-module-0.30
  #定义header的返回信息

  --add-module=../array-var-nginx-module-0.05
  #Nginx添加支持数组类型的变量

  --add-module=../memc-nginx-module-0.17
  #使缓存支持高并发,针对一些访问量很大的页面,特别是瞬时访问量很大的系统,jetty无法支撑住请求,这时候可以使用ngx-memc模块与srcache-nginx-module模块将请求页面数据
  存放在 memcached中,可大大提升系统的并发能力

  --add-module=../redis2-nginx-module-0.13
  #它可以让 Nginx 以非阻塞方式直接防问远方的 Redis 服务,同时支持 TCP 协议和 Unix Domain Socket 模式,并且可以启用强大的 Redis 连接池功能。

  --add-module=../redis-nginx-module-0.3.7
  #让Nginx可直接查询redis中的数据,不用经过程序,大大的提高效率。

  --add-module=../rds-json-nginx-module-0.14
  #用于处理json字符串,提升nginx处理json字符串性能

  --add-module=../rds-csv-nginx-module-0.07
  #控制输出的模块转换Resty-DBD流为csv

   openresty没有的模块

  --add-module=../nginx_upstream_check_module-0.3.0
  #该模块用于upstream健康检查

  #下载地址:https://codeload.github.com/yaoweibin/nginx_upstream_check_module/tar.gz/v0.3.0

  --add-module=../ngx_cache_purge-2.3
  #该模块用于清理nginx缓存

  #下载地址:https://codeload.github.com/FRiCKLE/ngx_cache_purge/tar.gz/2.3

  lua开发环境相关模块,安装方式如下:

 1 [root@localhost LuaJIT-2.1-20190507]# pwd
 2 /root/qin/openresty-1.15.8.2/build/LuaJIT-2.1-20190507
 3 [root@localhost LuaJIT-2.1-20190507]# ll
 4 total 36
 5 -rw-rw-r--. 1 mysql 1003 3053 May  3  2019 COPYRIGHT
 6 drwxrwxr-x. 3 mysql 1003 4096 May  3  2019 doc
 7 drwxrwxr-x. 2 mysql 1003 4096 May  3  2019 dynasm
 8 drwxrwxr-x. 2 mysql 1003   39 Dec 18 15:10 etc
 9 -rw-rw-r--. 1 mysql 1003 5684 May  3  2019 Makefile
10 -rw-rw-r--. 1 mysql 1003  453 May  3  2019 README
11 drwxrwxr-x. 5 mysql 1003 8192 Dec 18 15:10 src
12 drwxrwxr-x. 2 mysql 1003  112 May  3  2019 t
13 [root@localhost LuaJIT-2.1-20190507]# make && make install 
14 ........
15 ........
16 ln -sf luajit-2.1.0-beta3 /usr/local/bin/luajit
17 ==== Successfully installed LuaJIT 2.1.0-beta3 to /usr/local ====

   4. 安装步骤

 1 [root@localhost openresty-1.15.8.2]# pwd
 2 /root/qin/openresty-1.15.8.2
 3 [root@localhost openresty-1.15.8.2]# ./configure --prefix=/data/soft/openresty/nginx --with-http_ssl_module --with-http_stub_status_module --with-ipv6 --with-http_realip_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --add-module=/root/qin^Cginx_upstream_check_module-0.3.0 --add-module=/root/qin/ngx_cache_purge-2.3
 4 
 5 ...........
 6 ...........
 7 
 8 ./configure: warning: the "--with-ipv6" option is deprecated
 9 cd ../..
10 Type the following commands to build and install:
11     gmake
12     gmake install
13 
14 [root@localhost openresty-1.15.8.2]# gmake && gmake install 
15 
16 ........
17 ........
18 mkdir -p /data/soft/openresty/nginx/site/lualib /data/soft/openresty/nginx/site/pod /data/soft/openresty/nginx/site/manifest
19 ln -sf /data/soft/openresty/nginx/nginx/sbin/nginx /data/soft/openresty/nginx/bin/openresty

  查看openresty版本以及已安装的模块

  

1 [root@localhost openresty-1.15.8.2]# /data/soft/openresty/nginx/bin/openresty -V
2 nginx version: openresty/1.15.8.2
3 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
4 built with OpenSSL 1.0.2k-fips  26 Jan 2017
5 TLS SNI support enabled
6 configure arguments: --prefix=/data/soft/openresty/nginx/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/data/soft/openresty/nginx/luajit/lib --with-http_ssl_module --with-http_stub_status_module --with-ipv6 --with-http_realip_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --add-module=/home/pukka/pkg/nginx_upstream_check_module-0.3.0 --add-module=/home/pukka/pkg/ngx_cache_purge-2.3 --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module

   直接configure安装的模块

1 [root@localhost openresty-1.15.8.2]#  /data/soft/openresty/nginx/bin/openresty -V
2 nginx version: openresty/1.15.8.2
3 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
4 built with OpenSSL 1.0.2k-fips  26 Jan 2017
5 TLS SNI support enabled
6 configure arguments: --prefix=/data/soft/openresty/nginx/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/data/soft/openresty/nginx/luajit/lib --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module

 

  openresty启动

1 [root@localhost openresty-1.15.8.2]# /data/soft/openresty/nginx/bin/openresty
2 [root@localhost openresty-1.15.8.2]# ps -ef | grep nginx
3 root     13973     1  0 17:14 ?        00:00:00 nginx: master process /data/soft/openresty/nginx/bin/openresty
4 nobody   13974 13973  0 17:14 ?        00:00:00 nginx: worker process
5 root     13980  1431  0 17:14 pts/0    00:00:00 grep --color=auto nginx