Nginx中文文档
DocsHome
  • 贡献导引
  • 介绍
    • 安装 nginx
    • 从源码构建 nginx
    • 初学者指南
    • 管理指南
    • 控制 nginx
    • 连接处理方式
    • 设置哈希
    • 调试日志
    • 记录日志到 syslog
    • 配置文件度量单位
    • 命令行参数
    • Windows 下的 nginx
    • QUIC 和 HTTP/3 支持
    • nginx 如何处理请求
    • 服务器名称
    • 使用 nginx 作为 HTTP 负载均衡器
    • 配置 HTTPS 服务器
    • nginx 如何处理 TCP/UDP 会话
    • 关于 nginScript
  • 其他
    • Linux 软件包
  • How-To
    • 在 Win32 平台上使用 Visual C 构建 nginx
    • 设置 Amazon EC2 的 Nginx Plus 环境
    • 使用 DTrace pid 提供程序调试 nginx
    • 转换重写规则
    • WebSocket 代理
  • 开发
    • 贡献指南
    • 开发指南
  • 模块参考
  • 核心功能
    • HTTP
      • ngx_http_core_module
      • ngx_http_access_module
      • ngx_http_addition_module
      • ngx_http_api_module
      • ngx_http_auth_basic_module
      • ngx_http_auth_jwt_module
      • ngx_http_auth_request_module
      • ngx_http_autoindex_module
      • ngx_http_browser_module
      • ngx_http_charset_module
      • ngx_http_dav_module
      • ngx_http_empty_gif_module
      • ngx_http_f4f_module
      • ngx_http_fastcgi_module
      • ngx_http_flv_module
      • ngx_http_geo_module
      • ngx_http_geoip_module
      • ngx_http_grpc_module
      • ngx_http_gunzip_module
      • ngx_http_gzip_module
      • ngx_http_gzip_static_module
      • ngx_http_headers_module
      • ngx_http_hls_module
      • ngx_http_image_filter_module
      • ngx_http_index_module
      • ngx_http_js_module
      • ngx_http_keyval_module
      • ngx_http_limit_conn_module
      • ngx_http_limit_req_module
      • ngx_http_log_module
      • ngx_http_map_module
      • ngx_http_memcached_module
      • ngx_http_mirror_module
      • ngx_http_mp4_module
      • ngx_http_perl_module
      • ngx_http_proxy_module
      • ngx_http_random_index_module
      • ngx_http_realip_module
      • ngx_http_referer_module
      • ngx_http_rewrite_module
      • ngx_http_scgi_module
      • ngx_http_secure_link_module
      • ngx_http_session_log_module
      • ngx_http_slice_module
      • ngx_http_spdy_module(过时)
      • ngx_http_split_clients_module
      • ngx_http_ssi_module
      • ngx_http_ssl_module
      • ngx_http_status_module(过时)
      • ngx_http_stub_status_module
      • ngx_http_sub_module
      • ngx_http_upstream_module
      • ngx_http_upstream_conf_module
      • ngx_http_upstream_hc_module
      • ngx_http_userid_module
      • ngx_http_uwsgi_module
      • ngx_http_v2_module
      • ngx_http_xslt_module
    • Mail
      • ngx_mail_core_module
      • ngx_mail_auth_http_module
      • ngx_mail_proxy_module
      • ngx_mail_ssl_module
      • ngx_mail_imap_module
      • ngx_mail_pop3_module
      • ngx_mail_smtp_module
    • Stream
      • ngx_stream_core_module
      • ngx_stream_access_module
      • ngx_stream_geo_module
      • ngx_stream_geoip_module
      • ngx_stream_js_module
      • ngx_stream_keyval_module
      • ngx_stream_limit_conn_module
      • ngx_stream_log_module
      • ngx_stream_map_module
      • ngx_stream_proxy_module
      • ngx_stream_realip_module
      • ngx_stream_return_module
      • ngx_stream_split_clients_module
      • ngx_stream_ssl_module
      • ngx_stream_ssl_preread_module
      • ngx_stream_upstream_module
      • ngx_stream_upstream_hc_module
      • ngx_stream_zone_sync_module
    • 其他
      • ngx_google_perftools_module
由 GitBook 提供支持
在本页
  • 指令
  • secure_link
  • secure_link_md5
  • secure_link_secret
  • 内嵌变量
  • 原文档
  1. 核心功能
  2. HTTP

ngx_http_secure_link_module

上一页ngx_http_scgi_module下一页ngx_http_session_log_module

最后更新于5年前

ngx_http_secure_link_module 模块(0.7.18)用于检查请求链接的真实性,保护资源免受未经授权的访问,并限制链接有效时长。

通过将请求中传递的校验和值与为请求计算的值进行比较,验证所请求链接的真实性。如果链接有效时长有限且时间已过,则链接将被视为过期。这些检查的状态在 $secure_link 变量中可用。

该模块提供两种替代操作模式。第一种模式由 指令启用,用于检查请求链接的真实性以及保护资源免受未经授权的访问。第二种模式(0.8.50)由 和 指令启用,也用于限制链接的有效期。

默认情况下不构建此模块,可使用 --with-http_secure_link_module 配置参数启用它。

指令

secure_link

-

说明

语法

secure_link expression;

默认

——

上下文

http、server、location

定义一个包含变量的字符串,从中提取链接的校验和值和有效期。

secure_link_md5

-

说明

语法

secure_link_md5 expression;

默认

——

上下文

http、server、location

定义一个将为其计算 MD5 哈希值并与请求中传递的值进行比较的表达式。

表达式应包含链接(资源)的保护部分和秘密部分。如果链接的有效市场为有限,则表达式还应包含 $secure_link_expires。

为防止未经授权的访问,表达式可能包含有关客户端的一些信息,例如其地址和浏览器版本。

例如:

location /s/ {
    secure_link $arg_md5,$arg_expires;
    secure_link_md5 "$secure_link_expires$uri$remote_addr secret";

    if ($secure_link = "") {
        return 403;
    }

    if ($secure_link = "0") {
        return 410;
    }

    ...
}

/s/link?md5=_e4Nc3iduzkWRm01TBBNYw&expires=2147483647 链接限制了 IP 地址为 127.0.0.1 的客户端对 /s/link 访问。该链接的有效时长有限,直到 2038 年 1 月 19 日(GMT)。

在 UNIX 上,md5 请求参数值可以获取为:

echo -n '2147483647/s/link127.0.0.1 secret' | \
    openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =

secure_link_secret

-

说明

语法

secure_link_secret word;

默认

——

上下文

http、server、location

定义一个用于检查所请求链接真实性的暗语(word)。

请求链接的完整 URI 如下所示:

/prefix/hash/link

其中 hash 是针对链接和暗语相连计算的 MD5 哈希的十六进制表示,而 prefix 是没有斜杠的任意字符串。

如果请求的链接通过了真实性检查,则 $secure_link 变量将设置为从请求 URI 中提取的链接。否则,$secure_link 变量设置为空字符串。

例如:

location /p/ {
    secure_link_secret secret;

    if ($secure_link = "") {
        return 403;
    }

    rewrite ^ /secure/$secure_link;
}

location /secure/ {
    internal;
}

/p/5e814704a28d9bc1914ff19fa0c4a00a/link 的请求将在内部重定向到 /secure/link。

在 UNIX 上,此示例的哈希值可以通过以下方式获得:

echo -n 'linksecret' | openssl md5 -hex

内嵌变量

  • $secure_link

    链接检查的状态。具体值取决于所选的操作模式。

  • $secure_link_expires

    请求中传递的链接的过期时间,仅用于 secure_link_md5 指令。

原文档

表达式中使用的变量通常与请求相关联。见下面的。

将从字符串中提取的校验和值与 指令定义的表达式的 MD5 哈希值进行比较。如果校验和不同,则 $secure_link 变量设置为空字符串。如果校验和相同,则检查链接有效期。如果链接的有效期有限且时间已过,则 $secure_link 变量将设置为 0。否则,它被设置为 1。请求中传递的 MD5 哈希值使用 编码。

如果链接的有效时长有限,则自 Epoch(Thu, 01 Jan 1970 00:00:00 GMT)以秒为单位设置到期时间。该值在 MD5 哈希之后的表达式中指定,并以逗号分隔。请求中传递的到期时间可通过 $secure_link_expires 变量获得,以便在 指令中使用。如果未指定到期时间,则链接将有无限有效时长。

http://nginx.org/en/docs/http/ngx_http_secure_link_module.html
指令
secure_link
secure_link_md5
secure_link_secret
内嵌变量
secure_link_secret
secure_link
secure_link_md5
例子
base64url
secure_link_md5
secure_link_md5