OpenResty环境搭建与基础配置
一、环境准备
确保你的Linux系统已连接网络,并按照以下步骤进行安装。
1. 安装依赖库
首先需要安装一些必要的开发库,执行以下命令:
sudo yum install -y pcre-devel openssl-devel gcc
2. 添加OpenResty仓库
为了方便后续更新和管理,添加OpenResty官方YUM仓库:
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
如果提示缺少`yum-config-manager`命令,请先安装相关工具:
sudo yum install -y yum-utils
3. 安装OpenResty
完成上述步骤后,可以使用以下命令安装OpenResty:
sudo yum install -y openresty
4. 配置环境变量
编辑`/etc/profile`文件,将OpenResty的Nginx目录添加到环境变量中:
export OPENRESTY_HOME=/usr/local/openresty/nginx
export PATH=$OPENRESTY_HOME/sbin:$PATH
使配置生效:
source /etc/profile
二、启动与基本配置
1. 启动服务
通过以下命令启动Nginx:
nginx
重新加载配置或停止服务时,分别使用:
nginx -s reload
nginx -s stop
2. 修改默认配置
编辑配置文件`/usr/local/openresty/nginx/conf/nginx.conf`,示例如下:
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8081;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
保存后启动Nginx,访问地址如:`http://
三、Lua模块集成
1. 加载Lua模块
在配置文件中添加如下内容以支持Lua脚本:
lua_package_path "/usr/local/openresty/lualib/?.lua;;";
lua_package_cpath "/usr/local/openresty/lualib/?.so;;";
2. 示例代码
以下为一个简单的公共Lua函数库:
-- 发起HTTP请求并解析响应结果
local function fetch_http(url, params)
local res = ngx.location.capture(url, {
method = ngx.HTTP_GET,
args = params
})
if not res then
ngx.log(ngx.ERR, "Failed to fetch data from ", url)
ngx.exit(404)
end
return res.body
end
return { fetch_http = fetch_http }
以下是Redis连接池管理示例:
-- 释放Redis连接到连接池
local function release_redis_connection(redis_instance)
local max_idle_time = 10000
local pool_size = 100
local ok, err = redis_instance:set_keepalive(max_idle_time, pool_size)
if not ok then
ngx.log(ngx.ERR, "Error releasing Redis connection: ", err)
end
end
查询Redis数据的API示例:
-- 查询指定key的值
local function query_redis(redis_client, host, port, key)
local connected, err = redis_client:connect(host, port)
if not connected then
ngx.log(ngx.ERR, "Redis connection failed: ", err)
return nil
end
local result, err = redis_client:get(key)
if not result or result == ngx.null then
ngx.log(ngx.ERR, "Key not found in Redis: ", key)
result = nil
end
release_redis_connection(redis_client)
return result
end
3. 启用共享字典缓存
在Nginx配置中启用共享字典缓存:
lua_shared_dict cache_store 150m;