插件窝 干货文章 Centos7安装Nginx整合Lua的方法

Centos7安装Nginx整合Lua的方法

Nginx OpenResty Lua 安装 960    来源:    2025-04-27

CentOS 7 安装 Nginx 并整合 Lua 模块

方法一:使用 OpenResty(推荐)

OpenResty 是一个集成了 Nginx 和 LuaJIT 的全功能 Web 平台,是最简单的方式。

1. 安装 OpenResty

# 添加 OpenResty 仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

# 安装 OpenResty
sudo yum install -y openresty

# 可选:安装命令行工具
sudo yum install -y openresty-resty

2. 启动 OpenResty

# 启动服务
sudo systemctl start openresty

# 设置开机启动
sudo systemctl enable openresty

3. 验证安装

curl http://localhost

方法二:手动编译 Nginx 并添加 Lua 模块

如果你需要自定义 Nginx 版本或模块,可以采用此方法。

1. 安装依赖

sudo yum install -y gcc make pcre-devel zlib-devel openssl-devel

2. 下载并安装 LuaJIT

# 下载 LuaJIT
wget https://luajit.org/download/LuaJIT-2.0.5.tar.gz
tar -xzvf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5

# 编译安装
make && sudo make install

# 设置环境变量
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0

3. 下载 Nginx 和 ngx_lua 模块

# 下载 Nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -xzvf nginx-1.18.0.tar.gz

# 下载 ngx_lua 模块
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.19.tar.gz -O lua-nginx-module-0.10.19.tar.gz
tar -xzvf lua-nginx-module-0.10.19.tar.gz

4. 编译安装 Nginx

cd nginx-1.18.0

# 配置编译选项
./configure --prefix=/usr/local/nginx \
            --with-ld-opt="-Wl,-rpath,/usr/local/lib" \
            --add-module=../lua-nginx-module-0.10.19

# 编译安装
make && sudo make install

5. 配置 Nginx 使用 Lua

编辑 /usr/local/nginx/conf/nginx.conf,添加 Lua 测试配置:

location /lua {
    default_type 'text/plain';
    content_by_lua 'ngx.say("Hello, Lua!")';
}

6. 启动 Nginx

sudo /usr/local/nginx/sbin/nginx

7. 测试 Lua 功能

curl http://localhost/lua
# 应该返回 "Hello, Lua!"

常见问题解决

  1. 找不到 LuaJIT 库

    sudo ln -sf /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
    
  2. Nginx 启动报错

    • 确保所有依赖模块已正确安装
    • 检查 Nginx 错误日志 /usr/local/nginx/logs/error.log
  3. Lua 脚本权限问题

    • 确保 Nginx 工作进程有权限读取 Lua 脚本文件

进阶配置

使用外部 Lua 文件

location /lua_test {
    default_type 'text/html';
    content_by_lua_file /path/to/your/script.lua;
}

使用 Lua 访问 Nginx 变量

ngx.say(ngx.var.remote_addr)  -- 输出客户端IP

两种方法各有优势,OpenResty 提供了更完整的 Lua 生态和更好的维护性,而手动编译则提供了更高的灵活性。根据你的具体需求选择适合的方案。