OpenResty 是一个通过 Lua 扩展 Nginx 实现的可伸缩的 Web 平台,内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。功能和nginx类似,就是由于支持lua动态脚本,所以更加灵活,可以实现 鉴权、限流、 分流、日志记录、灰度发布等功能。
Openresty安装
安装文件 下载地址 :https://download.csdn.net/my 或者 https://openresty.org/cn/download.html
1、下载并解压安装文件 如下:
[root@zk03 apps]# tar -zvxf openresty-1.13.6.2.tar.gz
[root@zk03 apps]# tmv openresty-1.13.6.2 openresty
[root@zk03 apps]# cd openresty
[root@zk03 openresty]# ll
总用量 96
drwxrwxr-x. 43 1000 1000 4096 5月 15 2018 bundle
-rwxrwxr-x. 1 1000 1000 48140 5月 15 2018 configure
-rw-rw-r--. 1 1000 1000 22924 5月 15 2018 COPYRIGHT
drwxrwxr-x. 2 1000 1000 156 5月 15 2018 patches
-rw-rw-r--. 1 1000 1000 4689 5月 15 2018 README.markdown
-rw-rw-r--. 1 1000 1000 8972 5月 15 2018 README-windows.txt
drwxrwxr-x. 2 1000 1000 52 5月 15 2018 util
2、进入 openresty 目录 执行 ./configure 准备编译文件 提示
[root@zk03 openresty]# ./configure
/usr/bin/env: perl: 没有那个文件或目录
执行 yum install perl-devel 安装 perl
提示 configure: error: the HTTP rewrite module requires the PCRE library.
执行 yum install pcre-devel 安装 pcre
安装完成再次执行 ./configure 成功
3、’执行 make && make install 进行编译和安装
安装完成 执行 where is openresty 找到安装位置。然后切换到该目录下 可以看到有一个nginx目录,因为 openresty 就是基于nginx的扩展,就是包含了原有nginx的功能。
[root@zk03 openresty]# where is openresty
-bash: where: 未找到命令
[root@zk03 openresty]# whereis openresty
openresty: /usr/local/openresty
[root@zk03 openresty]# cd /usr/local/openresty
[root@zk03 openresty]# ll
总用量 248
drwxr-xr-x. 2 root root 123 1月 29 04:50 bin
-rw-r--r--. 1 root root 22924 1月 29 04:50 COPYRIGHT
drwxr-xr-x. 6 root root 56 1月 29 04:50 luajit
drwxr-xr-x. 6 root root 70 1月 29 04:50 lualib
drwxr-xr-x. 6 root root 54 1月 29 04:50 nginx
drwxr-xr-x. 44 root root 4096 1月 29 04:50 pod
-rw-r--r--. 1 root root 224167 1月 29 04:50 resty.index
drwxr-xr-x. 5 root root 47 1月 29 04:50 site
HelloWorld
开始第一个程序,HelloWorld
编辑配置问价 openresty/nginx/conf 下的nginx.conf 修改 location / 配置内容为 从 lua脚本输出内容 如下:
vi nginx/conf/nginx.conf
location / {
# root html;
# index index.html index.htm;
default_type text/html;
content_by_lua_block {
ngx.say("helloworld");
}
}
到 openresty/nginx/sbin 下执行 nginx 命令启动nginx 如下:
[root@zk03 openresty]# cd nginx
[root@zk03 nginx]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 1月 29 05:02 conf
drwxr-xr-x. 2 root root 40 1月 29 04:50 html
drwxr-xr-x. 2 root root 6 1月 29 04:50 logs
drwxr-xr-x. 2 root root 19 1月 29 04:50 sbin
[root@zk03 nginx]# sbin/nginx
浏览器中请求 zk03:80 返回 helloworld 如下:
创建工作目录
或者为了不影响默认的安装目录,我们可以创建一个独立的空间来练习,先到在安装目录下创建 demo 目录,安装目录为/usr/local/openresty mkdir demo 然后在 demo 目录下创建两个子目录,一个是 logs 、一个是 conf 如下:
[root@zk03 nginx]# cd ..
[root@zk03 openresty]# mkdir demo
[root@zk03 openresty]# cd demo
[root@zk03 demo]# mkdir logs
[root@zk03 demo]# mkdir conf
conf 目录下 创建nginx配置文件 如下
worrker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
server {
listen 8888;
location / {
default_type text/html;
content_by_lua_block {
ngx.say("Hello world")
}
}
}
}
然后启动nginx -p 指明 nginx 启动时的配置目录
[root@zk03 demo]# ../nginx/sbin/nginx -p /usr/local/openresty/demo
访问zk03 可以正常访问
总结
刚刚通过一个 helloworld 的简单案例来演示了 nginx+lua 的功能,其中用到
了 ngx.say 这个表达式,在 contentbyluablock 这个片段中进行访问。这个表达式属于ngxlua模块提供的api,用于向客户端输出一个内容。
更进一步的配置应用参考 :https://blog.csdn.net/zhangxm_qz/article/details/87939230 openresty实现网关功能