美文网首页nginx 教程
[深] nginx secure_link_module模块(2

[深] nginx secure_link_module模块(2

作者: 瓦力博客 | 来源:发表于2019-01-22 10:01 被阅读37次

获取全套nginx教程,请访问瓦力博客

ngx_http_secure_link_module模块用于检查请求链接的真伪,保护资源免受未经授权的访问,限制链接的生命周期。

通过将请求中传递的校验和值与请求计算的值进行比较来验证请求链接的真实性。如果链接的生命周期有限并且时间已过,则该链接将被视为过时。

该模块提供两种备选操作模式。第一种模式secure_link_secret指令启用,用于检查请求链接的真实性以及保护资源免受未经授权的访问。第二种模式secure_linksecure_link_md5指令启用,也用于限制链接生命周期。

1.配置模块

secure_link

Syntax: secure_link expression;
Default: —
Context: http, server, location

secure_link_md5

Syntax: secure_link_md5 expression;
Default: —
Context: http, server, location

secure_link_secret

Syntax: secure_link_secret word;
Default: —
Context: location

2.验证原理

ssl

用户在客户端点击下载按钮,服务器收到请求后生成一个下载地址返回给客户端。客户端在用这个生成的下载地址去请求资源,此时nginx去做校验,校验链接地址真伪和链接地址是否过期。如果链接地址是真的并且链接地址没有过期,就给客户端返回下载资源。(nginx验证和服务器生成密钥规则要一致,否则不会通过的)

3.配置教程

服务目录

/opt/app
|-code9
   |-md5url.sh
   |-index.html
   |-download
       |-tesla.img
       
/etc/nginx/conf.d
|-download.conf

md5url.sh

#生成一个测试链接脚本
servername="walidream.com"
download_file="/download/tesla.img"
time_num=$(date -d "2019-1-10 00:00:00" +%s)
secret_num="wali"

res=$(echo -n "${time_num}${download_file} ${secret_num}"|openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =)

echo "http://${servername}${download_file}?md5=${res}&expires=${time_num}"

获取测试链接

sh /opt/app/code9/md5url.sh

输出

http://walidream.com/download/tesla.img?md5=T1gCW3YQNsnWCcJHWWbcPg&expires=154704960

index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <h1>欢迎来到瓦力博客</h1>
</body>
</html>

download.conf

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    
    root /opt/app/code9;

    location / {
        index index.html;
    }
    
    location /download {
        secure_link $arg_md5,$arg_expires;
        secure_link_md5 "$secure_link_expires$uri wali";
    
        if ($secure_link = "") {
            return 403;
        }

        if ($secure_link = "0") {
            return 410;
        }
    }
}   

检测语法并重启

nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf

我们在浏览器输入walidream.com会显示欢迎来到瓦力博客,当输入上面测试链接http://walidream.com/download/tesla.img?md5=T1gCW3YQNsnWCcJHWWbcPg&expires=154704960就可以看到tesla.img文件在浏览器下载了。

将后面的时间戳随便改写如expires=15470496011,回车,发现网页变为403

相关文章

  • [深] nginx secure_link_module模块(2

    获取全套nginx教程,请访问瓦力博客 ngx_http_secure_link_module模块用于检查请求链接...

  • nginx secure_link_module模块(九)

    secure_link_module模块 安全链接模块作用:指定并允许检查请求的链接的真实性以及保护资源免遭未经授...

  • 8.nginx模块介绍

    nginx的模块 1.编译进nginx的模块2.提供那些配置3.模块合适被使用4.提供那些变量 查找nginx模块...

  • 6.Nginx模块学习方法

    Nginx模块 Nginx模块分为 Nginx官方模块 和 第三方模块 , 这里我们拿Nginx官方模块来介绍一下...

  • Nginx在已安装的情况下新增 echo 模块

    标签(空格分隔): nginx 1 查看已经安装过的模块 2 下载需要的echo模块 3 下载nginx源码 4 ...

  • 配置nginx禁止国外IP访问

    1、拉取geoip2模块编译到nginx 。 查看nginx编译参数,添加geoip2模块重新编译。 备份旧的ng...

  • Nginx核心模块以及指令介绍

    Nginx模块概览 Nginx核心模块以及指令介绍 注意:Nginx的核心模块包含主模块和事件模块,即上图的cor...

  • 应用运维面试核心

    面试题 Nginx模块 你以前用过哪些Nginx模块? upstream 是Nginx负载均衡模块 image ...

  • nginx内核原理

    Nginx的模块 Nginx由内核和模块组成。 Nginx的模块从结构上分为核心模块、基础模块和第三方模块: 核心...

  • nginx常用模块

    nginx常用模块 1、日志模块 ngx_http_log_module 2、压缩传输模块 ngx_http_gz...

网友评论

    本文标题:[深] nginx secure_link_module模块(2

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