【原创实践】安装与配置 lua-cjson 在宝塔 Nginx 上

安装与配置 lua-cjson 在宝塔 Nginx 上

1️⃣ 安装 LuaJIT 开发环境

在 Ubuntu 20.04 上安装 LuaJIT 及开发头文件:

bash 复制代码
sudo apt update
sudo apt install luajit libluajit-5.1-dev

确认安装成功:

bash 复制代码
luajit -v

输出类似:

nginx 复制代码
LuaJIT 2.1.0-beta3

确认头文件路径:

bash 复制代码
find /usr -name lua.h

通常会看到:

bash 复制代码
/usr/include/luajit-2.1/lua.h
/usr/local/include/luajit-2.1/lua.h

2️⃣ 下载 lua-cjson 并编译

bash 复制代码
cd /usr/local/src
git clone https://github.com/openresty/lua-cjson.git
cd lua-cjson

使用正确的 LuaJIT include 路径编译:

bash 复制代码
make clean
make LUAJIT=1 LUA_INCLUDE_DIR=/usr/include/luajit-2.1

如果出现路径问题,可以强制指定 CFLAGS:

bash 复制代码
make clean
make LUAJIT=1 LUA_INCLUDE_DIR=/usr/include/luajit-2.1 \
  CFLAGS="-O3 -Wall -fpic -I/usr/include/luajit-2.1"

编译成功后,会生成:

复制代码
cjson.so

3️⃣ 拷贝到 Nginx Lua 模块路径

宝塔 Nginx Lua 模块路径通常为:

swift 复制代码
/www/server/nginx/lib/lua/

将编译好的 cjson.so 拷贝到:

bash 复制代码
cp cjson.so /www/server/nginx/lib/lua/
cp cjson.so /www/server/nginx/lib/lua/5.1/  # 如果存在 5.1 目录

4️⃣ 配置 Nginx lua_package_path 与 lua_package_cpath

编辑 /www/server/nginx/conf/nginx.conf,在 http {} 内加入:

nginx 复制代码
lua_package_path "/www/server/nginx/lib/lua/?.lua;;";
lua_package_cpath "/www/server/nginx/lib/lua/?.so;;";

可以使用命令自动添加:

bash 复制代码
sudo sed -i '/lua_package_path/a\    lua_package_cpath "/www/server/nginx/lib/lua/?.so;;";' /www/server/nginx/conf/nginx.conf

5️⃣ 重启 Nginx

bash 复制代码
sudo nginx -t
sudo systemctl restart nginx

或者通过宝塔面板重载 Nginx。


6️⃣ 测试 lua-cjson 是否可用

在 nginx.conf 临时加入测试 location

nginx 复制代码
location /test_cjson {
    default_type text/plain;
    content_by_lua_block {
        local ok, cjson = pcall(require, "cjson")
        if ok then
            ngx.say("cjson OK")
        else
            ngx.say("cjson NOT FOUND: ", cjson)
        end
    }
}

访问测试:

bash 复制代码
curl http://127.0.0.1/test_cjson

输出:

nginx 复制代码
cjson OK

✅ 表示安装和配置成功。


7️⃣ 总结

  • 安装 LuaJIT 及开发头文件

  • 下载 lua-cjson 并指定正确 include 路径编译

  • 拷贝 cjson.so 到 Nginx Lua 模块目录

  • 配置 lua_package_pathlua_package_cpath

  • 重启 Nginx 并测试

这样 Nginx Lua 就可以正常 require("cjson"),你的 Lua 脚本访问鉴权接口就不会再报 500。

相关推荐
我最爱吃鱼香茄子13 小时前
【踩坑实录】若依Vue宝塔部署:验证码空白、反复提示登录状态已过期|完整排错
nginx·宝塔·若依·ruoyi‑vue·登录状态已过期
dazhong201213 小时前
Docker 进阶篇(二) Docker Compose 部署 Nginx 实践
nginx·docker·容器
笑梦无境18 小时前
nginx安装(5)
linux·运维·nginx
墨着染霜华1 天前
SpringCloud Gateway线上Nginx代理后自定义下划线请求头丢失(app_name/app_version获取不到)完美解决
nginx·spring cloud·gateway
流光D2 天前
AI Era: Building Web Sites and Configuring Nginx Reverse Proxy Process
前端·人工智能·nginx
Lsetea2 天前
Cloudflare报526 Invalid SSL certificate:源站证书与Nginx回源TLS排查
nginx·https·ssl证书·cloudflare·tls
姚不倒2 天前
负载均衡架构设计:F5 ↔ Nginx/HAProxy ↔ Keepalived 全链路映射
运维·网络·nginx
姚不倒2 天前
Tengine 实战:主动健康检查 + 动态 Upstream 配置
运维·网络·nginx
qetfw2 天前
Debian Nginx + PHP-FPM 配置:FastCGI、站点目录与访问验证
linux·nginx·debian·php
Rain的Java大神之路2 天前
高并发下的热点账户余额扣减:Redis+Lua脚本实现无锁记账
java·spring boot·redis·后端·spring cloud·缓存·lua