0
点赞
收藏
分享

微信扫一扫

大数据之OpenResty安装使用


一、OpenResty介绍

OpenResty 是一个基于 Nginx与 Lua 的高性能 Web 平台​,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty通过汇聚各种设计精良的 Nginx模块,从而将 Nginx有效地变成一个强大的通用 Web 应用平台。,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

简单的说:OpenResty = Nginx + Lua,是一个增强的Nginx。

二、OpenResty安装

1.、安装开发库依赖

yum install -y pcre-devel openssl-devel gcc curl

2、配置yum的依赖源

yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

3、.安装OpenResty

yum install openresty

4、openresty的默认安装目录

/usr/local/openresty

5、启动openresty(Nginx)

/usr/local/openresty/nginx/sbin/nginx
或者
service openresty start

6、通过浏览器查看nginx的页面

三、OpenResty配置文件

1、修改openresty下nginx的配置文件

vi /usr/local/openresty/nginx/conf/nginx.conf

大数据之OpenResty安装使用_nginx

在http的配置下添加如下配置

location /lua {  
default_type 'text/html';
content_by_lua 'ngx.say("hello 51doit")';
}

2、在浏览器中进行测试

大数据之OpenResty安装使用_lua_02

3、配置伪装图片的静态地址

location /log.gif {
#伪装成gif文件
default_type image/gif;
#本身关闭access_log
access_log off;

#返回空图片
empty_gif;
}

4、 使用lua的log_by_lua_file将参数写入到指定的日志文件中

替换上面的log.gif

location /log.gif {
#伪装成gif文件
default_type image/gif;
#本身关闭access_log
access_log off;

#使用lua将nginx的接收的参数写入到日志文件中
log_by_lua_file 'conf/log.lua';

#返回空图片
empty_gif;
}

5、创建一个log.lua文件

vi /usr/local/openresty/nginx/conf/log.lua

编写lua脚本

-- 引入lua所有解析json的库
local cjson = require "cjson"
-- 获取请求参数列表
local request_args_tab = ngx.req.get_uri_args()
-- 使用lua的io打开一个文件,如果文件不存在,就创建,a为append模式
local file = io.open("/logs/access.log", "a")
-- 定义一个json对象
local log_json = {}
-- 将参数的K和V迭代出来,添加到json对象中
for k, v in pairs(request_args_tab) do
log_json[k] = v
end
-- 将json写入到指定的log文件,末尾追加换行
file:write(cjson.encode(log_json), "\n")
-- 将数据写入
file:flush()

创建存放日志的目录并设置写入权限

mkdir /logs
chmod o+w /logs

6、按小时生产文件

如果一直往一个文件中写入数据,这个日志文件会过大,造成读写效率变低,现在按照小时生成文件

-- 引入lua用来解析json的库
local cjson = require "cjson"
-- 获取请求参数列表
local request_args_tab = ngx.req.get_uri_args()
-- 获取当前系统时间
local time = os.date("%Y%m%d%H",unixtime)
-- 使用lua的io打开一个文件,如果文件不存在,就创建,a为append模式
local path = "/mylog/access-" .. time .. ".log"
local file = io.open(path, "a")
-- 定义一个json对象
local log_json = {}
-- 将参数的K和V迭代出来,添加到json对象中
for k, v in pairs(request_args_tab) do
log_json[k] = v
end
-- 将json写入到指定的log文件,末尾追加换行
file:write(cjson.encode(log_json), "\n")
-- 将数据写入
file:flush()



举报

相关推荐

0 条评论