作用
(1)指定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问
(2)限制链接生效周期
配置语法
Syntax:secure_link expression;
Default:默认无
Context:http,server,location
Syntax:secure_link_md5 expression;
Default:默认无
Context:http,server,location
测试配置
新建/etc/nginx/conf.d/test_safe_down.conf
,内容如下
root /opt/app/code;
location / {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri shen";
if ($secure_link = ""){
return 403;
}
if ($secure_link = "0"){
return 410;
}
}
注:
(1)secure_link模块将取到参数名为md5和参数名为expires两个值。
(2)secure_link_md5将使用secure_link_expires
的值和uri
的值与后面的加密串shen
进行加密。
(3)若$secure_link
为非空
或者不为0
,则可以进行下载。
增加下载源
在/opt/app/code/download/
,增加一个文件供下载使用,如file.img。
模拟Tomcat等后端产生一个下载链接
使用一个Shell脚本生成,内容如下:
#!/bin/sh
#
servername="192.168.174.132/"
download_file="/download/file.img"
time_num=$(date -d "2018-11-11 00:00:00" +%s)
secret_num="shen"
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}"
显示http://192.168.174.132//download/file.img?md5=dFHI-J2vxRljIKizG8G9pA&expires=1541923200
测试
复制该链接,浏览器可以进行下载,此处是模拟后台生成的一个下载链接,这些操作其实都是在服务器后台执行的,只有后台才知道加密串"shen"
和过期时间(expires)等。
链接修改md5或者expires其中任何一个,都会出现禁止访问。