为了账号安全,请及时绑定邮箱和手机立即绑定

nginx secure_link_module模块(25)

标签:
Nginx

获取全套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
#生成一个测试链接脚本
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

输出

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消