当前位置: 首页 > news >正文

nginx添加lua模块

目录

  • 已安装了nginx,后追加lua模块
    • nginx 重新编译知识参考:
  • 从零安装
    • 一、首先需要安装必要的库(pcre、zlib、openssl)
    • 二、安装LUA环境及相关库 (LuaJIT、ngx_devel_kit、lua-nginx-module)
        • 注意: ltkj nginx-v1.21 不能使用 lua-nginx-module-v0.10.8,
    • 三、安装Nginx
    • 四、测试验证

nginx配置server以后,我们可以很方便的直接访问到文件服务器上的文件资源,但是某些情况下,文件资源可能是隐私图片,比如客户注册时上传的身份证照片等等,这时候我们需要对图片访问进行控制,必须登录后才能查看到这些隐私图片。

一般来说,我们都是通过后端controller对权限进行控制,但是nginx作为图片服务器的情况下,再专门为此写一个后端程序显然比较笨重。所以根据实际情况,我们采用openresty平台,用lua脚本+redis读取token的方式即可完成对图片访问服务器的权限控制。
———————————————
下面将演示如何配置nginx 及lua

已安装了nginx,后追加lua模块

nginx 重新编译知识参考:

https://blog.csdn.net/nalanxiaoxiao2011/article/details/133753090

从零安装

一、首先需要安装必要的库(pcre、zlib、openssl)

1、安装gcc(可通过“gcc -v”查看是否已经安装)

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器,包括C、C++、Objective-C、Fortran、Java、Ada和Go语言前端,也包括这些语言的库(如libstdc++,libgcj等)。

sudo yum -y install gcc

2、安装pcre

pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式。

sudo yum install -y pcre pcre-devel

3、安装zlib

zlib库提供了很多种压缩和解压缩方式,nginx使用zlib对http包的内容进行gzip。

sudo yum install -y zlib zlib-devel

4、安装openssl

openossl是一个开放源代码的软件库包,nginx使用该库以支持https协议。

sudo yum install -y openssl openssl-devel

二、安装LUA环境及相关库 (LuaJIT、ngx_devel_kit、lua-nginx-module)

1、安装LuaJIT

LuaJIT是Lua的即时编译器,使用C语言编写,兼容标准Lua 5.1。LuaJIT的运行效率比标准的Lua高出数倍(因为JIT技术),完全媲美使用C/C++代码。

cd /usr/local/soft #(下载到/usr/local/soft目录中)
1-1 安装包安装

sudo wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz
sudo tar -xzvf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
sudo make install PREFIX=/usr/local/luajit

1-2 源码安装 https://luajit.org/install.html

官方网站:https://github.com/openresty/lua-nginx-module
在这里插入图片描述

1. yum install git
2. git clone https://luajit.org/git/luajit.git
3. make & make install   或者 make & make install PREFIX=/usr/local/luajit
4. whereis lua 

2、下载ngx_devel_kit

ngx_devel_kit:Nginx Devel Kit,简称NDK,是一种Nginx模块,旨在扩展Nginx webserver的核心功能,可以作为其它Nginx模块的基础。

cd /usr/localsoft  #(下载到/usr/local目录中)sudo wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
sudo tar -xzvf v0.3.0.tar.gz

3、下载lua-nginx-module
lua-nginx-module也是一个Nginx模块,它将Lua的功能嵌入到Nginx HTTP Server中。同时,这个模块是OpenResty的核心组件(OpenResty是一个通过Lua扩展NGINX实现的可伸缩的Web平台)。

注意: ltkj nginx-v1.21 不能使用 lua-nginx-module-v0.10.8,

在编辑 nginx 阶段报错如下:
ginx 编译出错:ngx_chain_t’赋值给‘struct ngx_buf_t *’时类型不兼容

./lua-nginx-module/src/ngx_http_lua_headers.c: 在函数‘ngx_http_lua_ngx_req_raw_header’中:
../lua-nginx-module/src/ngx_http_lua_headers.c:151:15: 错误:将‘ngx_chain_t’赋值给‘struct ngx_buf_t *’时类型不兼容
b = hc->busy[i];
^
../lua-nginx-module/src/ngx_http_lua_headers.c:227:15: 错误:将‘ngx_chain_t’赋值给‘struct ngx_buf_t *’时类型不兼容
b = hc->busy[i];
^
make[1]: *** [objs/addon/src/ngx_http_lua_headers.o] 错误 1
make: *** [build] 错误 2
cd /usr/local/soft  #(下载到/usr/local/soft目录中)wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz 
tar -xzvf  v0.10.9rc7.tar.gz## 已过期
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz
tar -xzvf v0.10.8.tar.gz

三、安装Nginx

1、配置LuaJIT环境变量

su  #(切换到root用户)
(输入root用户Password)export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0

2、下载nginx-xxx.tar.gz 并解压
参考https://blog.csdn.net/nalanxiaoxiao2011/article/details/131856112
3、编译、安装(root权限下)
参考同上。

四、测试验证

1、使用lua指令的方式。
在/usr/local/nginx/conf/nginx.conf中加入如下代码:

#在server中添加一个location
location /hello_lua {default_type 'text/plain';content_by_lua 'ngx.say("hello, lua")';
}

2、或者使用lua文件的方式。
在/usr/local/nginx/conf/nginx.conf中加入如下代码:

#在server中添加一个location
location /lua_file {default_type 'text/html';content_by_lua_file conf/lua/test.lua; #在nginx安装目录下开始
}

然后编辑test.lua文件

ngx.say("hello, world, from lua conf/lua/test.lua file");

3、启动nginx(注意有没有报错)

sudo ln -s /usr/local/nginx/sbin/nginx usr/sbin/nginx  #(先做一下软连接,以便后续可以方便地执行nginx相关命令)
sudo nginx

注:如果启动nginx报如下错误:

nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

可通过以下方式解决,然后再启动nginx:

  • 方法一:

     sudo ln -s /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
    
  • 方法二:

    sudo vi /etc/ld.so.conf.d/libc.conf
    #(在libc.conf中增加如下代码,然后保存退出)
    /usr/local/luajit/lib  #(这里对应自己安装的luajit目录)
    #(退出后执行如下命令)
    sudo ldconfig
    sudo ln -s /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
    

4、http测试

    访问“http://127.0.0.1/hello_lua”  显示“hello, lua”

在这里插入图片描述

   访问“http://127.0.0.1/lua_file”  显示“hello, world, from lua conf/lua/test.lua file”

五、至此,安装成功。

http://www.lryc.cn/news/297787.html

相关文章:

  • Csapp-chapter3-压栈和弹栈
  • Rust入门1——HelloWorld
  • android中使用Bitmp对象绘制图形
  • Linux操作系统基础(八):Linux的vi/vim编辑器
  • nginx限制网段访问
  • Linux开机自动执行自定义脚本或命令
  • 【Linux】 网络编程套接字
  • MATLAB矩阵的操作(第二部分)
  • 基础面试题整理6之Redis
  • MySQL基础查询篇(7)-常用的字符串函数
  • 如何实现视线(目光)的检测与实时跟踪
  • STM32 FSMC (Flexible static memory controller) 灵活静态内存控制器介绍
  • 手把手教你开发Python桌面应用-PyQt6图书管理系统-图书信息维护模块UI设计实现
  • SpringBoot源码解读与原理分析(六)WebMvc场景的自动装配
  • git恢复rebase过程中遇到权限问题和丢失的提交
  • Spring boot 集成redis
  • c++ STL系列——(一)概述
  • AI-数学-高中-25-三角函数一图像解决三角函数不等式
  • 在Ubuntu上安装JetBrains Toolbox并解决libfuse.so.2依赖问题
  • 在vscode上传项目到gitee
  • 比较两次从接口获取的数据,并找出变动的字段
  • Java并发基础:LinkedBlockingDeque全面解析!
  • Zabbix6.x配置中文界面 解决乱码问题
  • next项目页面性能调优
  • 性能评测|虚拟化和裸金属 K8s 哪个性能更好?
  • 【大厂AI课学习笔记】【1.6 人工智能基础知识】(1)人工智能、机器学习、深度学习之间的关系
  • 计算机毕业设计基于的农村蔬菜销售系统SSM
  • 【Chrono Engine学习总结】3-地型terrain
  • 【Linux】构建模块
  • vscode远程连接失败