Nginx笔记-secure_link

501 阅读1分钟

作用

  • 指定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问
  • 限制链接生效周期

语法

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

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

流程

  • 客户端先去服务器端请求,资源的下载地址和验证信息
  • 服务器生成下载地址和验证信息返回给客户端
  • 客户端拿到服务器返回的资源地址进行下载

配置实例

location / {
	secure_link  $arg_md5,$arg_expires; # 我们的请求中必须带md5和expires参数
	secure_link_md5  "$secure_link_expires$uri happy"; # $secure_link_expires是内置指令请求带有效期的请求链接, 密钥是字符串happy

  # 空字符串,校验不通过
	if ($secure_link = "") { 
	    return 403;
	}

	# 时间过期
	if ($secure_link = "0") {
	    return 410;
	}
    } 
  • 空字符串: 验证不通过
  • 0: URL 过期
  • 1: 验证通过

生成url密钥的脚本

#!/bin/sh
#
servername="127.0.0.1"
download_file="/book.txt"
time_num=$(date -d "2020-12-30 00:00:00" +%s)
secret_num="happy"

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}"

我们用生成的加密之后带校验信息的url请求资源:

http://127.0.0.1/book.txt?md5=we6niyZZiZxpJFBJdyCpxg&expires=1609257600

参考文章:

www.imooc.com/wiki/nginxl… www.jianshu.com/p/11d70e37d… nginx.org/en/docs/htt…