美文网首页
linux 安装openresty并使用lua脚本转发鉴权

linux 安装openresty并使用lua脚本转发鉴权

作者: c608 | 来源:发表于2020-08-05 10:06 被阅读0次

    前言:实际开发中,用户上传的图片,我们需要对图片做保护措施,为了不让图片直接暴露在外网无差别的访问,图片服务器链接进行鉴权这个就显得尤为重要了

    大致上分为三步骤,如果第一步已经配置,则可以忽略
    1.配置yum源,方便安装openresty
    2.安装openresty
    3.编写鉴权lua脚本

    1.配置yum源

    1.1 将yum下载的rpm缓存下来(已备以后其他环境直接使用)
    命令:vim /etc/yum.conf

    cachedirrpm包存放位置(更改为希望保存的地址)

    keepcache 下载完成后是否进行清理(更改为1)

    debugleveldebug等级

    logfile 日志文件存放位置

    yum.conf配置信息

    1.2 配置yum源文件
    进入/etc/yum.reps.d/目录下,创建一个以 .repo结尾的文件
    我这边创建一个163的yum源,把下边文件放入到163yum源文件截图对应的目录下即可

    163yum源文件
    CentOS7-Base-163.repo文件下载 提取密码:esjb
    刷新配置:
    yum clean all 清空本地的yum源缓存
    yum repolist 重新生成元数据

    2.安装openresty

    2.1通过yum形式安装openresty

    #执行命令
    yum install yum-utils 
    yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo 
    yum install openresty 
    

    期间有可能yum源安装失败,提示无法解析163yum源域名,此时需要配置linux的dns域名服务器
    命令编辑:vim /etc/resolv.conf
    添加内容:
    nameserver 168.95.1.1
    nameserver 221.130.33.52
    保存退出

    2.2安装成功后,则可以在/home/yumopenresty目录下,查看到openresty文件

    openresty文件

    2.3我这边安装成功后,做了一下备份,方便其他同学下载使用
    openresty.tar文件下载 提取密码:cbva
    2.4后续lua脚本会用到http网络请求函数,所以在/usr/local/openresty/lualib/resty默认路径下,添加http工具类,以供后期调用http函数

    http工具类
    httptool文件下载 提取密码:pc70
    3.编写鉴权lua脚本

    3.1 touch命令新增touch getimage.lua文件,编写lua脚本

    --getimage.lua文件内容
    --从header中获取token值
    local headers = ngx.req.get_headers()
    local token = headers["token"]
    --判断token是否为空,为空则直接400
    if not token
    then
    ngx.exit(400)
    end
    
    local http = require "resty.http"
    local httpc = http.new()
    local url = "http://换成你自己请求的地址?Authorization="..token
    local resStr="false" --响应结果
    local res, err = httpc:request_uri(url, {
        method = "GET",
        headers = {
            ["Content-Type"] = "application/json",
        }
    })
    --判断接口返回结果状态
    if not res then
        ngx.log(ngx.WARN,"failed to request: ", err)
       ngx.exit(401)
    end
    --请求之后,状态码
    ngx.status = res.status
    if ngx.status ~= 200 then
        ngx.log(ngx.WARN,"非200状态,ngx.status:"..ngx.status)
          ngx.exit(402)
    end
    
    --响应的内容 如果结果用户id存在,则重定向图片服务器
    resStr = res.body
    if resStr ~= "false"
            then
    --      ngx.log(ngx.ERR,"failed to request: ")
            return
            else
            ngx.exit(403)
    end
    

    3.2 配置nginx
    /etc/nginx/lua/getimage.lualua文件地址,nginx触发转发前,去lua脚本文件鉴权,通过成功,则转发 proxy_pass http://127.0.0.1:7000/; 地址

        server {
            listen       9000;
            server_name  localhost;
            client_max_body_size 10m;
             location /busvapp/image/ {
              #日志地址
                access_log  /var/log/nginx/openrestyimage.access.log  main; 
              #错误日志地址
                error_log   /var/log/nginx/openrestyimage.error.log error;
                lua_code_cache off; #热部署,每次修改lua文件,不用重新加载部署
                rewrite_by_lua_file /etc/nginx/lua/getimage.lua;
                proxy_pass   http://127.0.0.1:7000/;       
            }   
            }
    

    3.3 启动openresty

    #启动命令
    usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf`
    #建立软链接,为openresty下的nginx建立软链(非必需)
    ln -s /usr/local/openresty/nginx/sbin/nginx  /usr/sbin/nginx
    #如果此前有其他版本nginx已经占用了软链接,则我们可以修改刷新软链接
    语法:ln –snf  [新的源文件或目录]  [目标文件或目录]
    ln -snf /usr/local/openresty/nginx/sbin/nginx  /usr/sbin/nginx
    #建立完软链接,快速启停
    #启动
    service nginx start 
    #停止
    service nginx stop
    #重启
    service nginx restart
    
    

    查看nginx版本信息是否是openresty,命令:nginx -V

    openresty版本信息

    至此,我们的图片鉴权服务就做好了

    后期 如果我们想把openresty服务拷贝到其他服务器上的话,很简单,只需要把openresty.tar包解压,进入到packages文件夹

    #命令安装rpm包,即可
    rpm -ivh openresty-zlib-1.2.11-3.el6.x86_64.rpm
    rpm -ivh openresty-pcre-8.44-1.el6.x86_64.rpm
    rpm -ivh openresty-openssl111-1.1.1g-3.el6.x86_64.rpm
    rpm -ivh openresty-1.17.8.2-1.el6.x86_64.rpm
    
    openresty的rpm安装包

    相关文章

      网友评论

          本文标题:linux 安装openresty并使用lua脚本转发鉴权

          本文链接:https://www.haomeiwen.com/subject/bpkrrktx.html