secure_link_hmac
secure_link_hmac 指令为 NGINX 配置基于 HMAC 的安全链接,允许对资源进行安全访问,并可选择设置过期时间。
Alternative NGINX HMAC Secure Link module with support for OpenSSL hashes
·
httpserverlocation
语法secure_link_hmac variable;
默认值none
上下文http, server, location
参数1
说明
secure_link_hmac 指令是 Alternative NGINX HMAC Secure Link module 的一部分,该模块通过使用 HMAC (基于哈希的消息认证码) 来生成安全令牌,改进了 NGINX 的标准 secure link 功能。通过指定单个参数,该指令允许用户定义一个保存安全令牌的变量,令牌可以包含像时间戳和过期期这样的每次请求参数。HMAC 令牌是使用密钥、通常将请求 URI、时间戳和过期信息组合成的消息以及 OpenSSL 支持的指定哈希算法(例如 SHA256 或 SHA512)生成的。
在处理请求时,NGINX 会使用提供的密钥和算法对该消息计算 HMAC,然后将其与请求中提供的令牌进行比对。如果计算得到的 HMAC 与令牌匹配且链接未过期,则授予访问;否则拒绝该请求。该机制允许对资源可用性进行精细控制,因为链接可以设置在指定时间后过期,从而为防止未授权访问敏感资源提供额外的安全层。
配置示例
location ^~ /files/ {
secure_link_hmac "$arg_st,$arg_ts,$arg_e";
secure_link_hmac_secret "my_secret_key";
secure_link_hmac_message "$uri|$arg_ts|$arg_e";
secure_link_hmac_algorithm sha256;
if ($secure_link_hmac != "1") {
return 404;
}
rewrite ^/files/(.*)$ /files/$1 break;
}⚠
确保密钥保持安全,不会在日志中泄露。
⚠
过期时间必须正确格式化并妥善管理;尽可能使用 UTC 时间。
⚠
HMAC 令牌需要使用相同设置生成;不匹配会导致访问失败。