secure_link_hmac

secure_link_hmac 指令为 NGINX 配置基于 HMAC 的安全链接,允许对资源进行安全访问,并可选择设置过期时间。

语法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 令牌需要使用相同设置生成;不匹配会导致访问失败。

← 返回所有指令