Nginx 使用 Lua 模块校验 Token
前言
最近在折腾 FastDFS 系统,用 FastDFS 来存放一些小文件(在之前学习的一个商城项目中,用来做图片服务器,存放商品的图片)。当然,一般情况下,别人都是可以直接访问的。不过后来又想,能不能添加一个验证,对用户的权限进行校验是否可以访问。
尝试过使用 FastDFS 内置防盗链功能,不过这样子每台 FastDFS 服务器都需要配置一下。于是乎在想,能不能在统一入口的 Nginx 服务器上进行校验了。这样子是不是省事一些,而且之后也可以用在其它地方。
于是乎,就发现了一个 Nginx 的第三方模块 —— lua-nginx-module。将 lua 语言嵌入到 Nginx 配置中,从而增强了 Nginx 的能力(即使从来未接触过 Lua,不过多看看别人的代码,然后不断地实践,总能把问题解决的)。于是乎,就使用 Nginx + lua-nginx-module 来验证 Token 信息。
环境说明
系统环境
- 虚拟机工具 :VMware Workstations 14 Pro
- 操作系统 :CentOS 7 64位
- IP 地址:192.168.229.165
相关安装包
- LuaJIT-2.0.5.tar.gz (下载地址:http://luajit.org/download.html)
- lua-nginx-module-0.10.13.tar.gz (下载地址:https://github.com/openresty/lua-nginx-module/releases)
- nginx-1.15.1.tar.gz (下载地址:http://nginx.org/en/download.html)
将以上安装包下载后,拷贝到系统 /root 目录下
Nginx 安装与配置
Nginx 及模块安装
# 安装 Nginx 依赖环境
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
# 解压安装包
cd /root
tar zxvf LuaJIT-2.0.5.tar.gz
tar zxvf lua-nginx-module-0.10.13.tar.gz
tar zxvf nginx-1.15.1.tar.gz
# LuaJIT 安装
cd /root/LuaJIT-2.0.5
make && make install
# Nginx 添加 lua_nginx_module 模块安装
cd /root/nginx-1.15.1
./configure --add-module=../lua-nginx-module-0.10.13/
make && make install
# 查看 Nginx 是否安装成功
/usr/local/nginx/sbin/nginx -v
# nginx version: nginx/1.15.1 则表示安装成功
# 可能出现以下错误,则需要建立软链接:/usr/local/nginx/sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/l