$http_referer

$http_referer 变量包含客户端请求中 Referer HTTP 头的值。 — NGINX Core (HTTP)

$http_referer NGINX Core (HTTP)

说明

$http_referer 变量在 NGINX 中用于访问 'Referer' HTTP 请求头的值,该头指示链接到被请求资源的网页的 URL。此变量可以帮助确定访客来自何处,使服务器管理员能够根据来源页面执行相应逻辑。例如,如果某个网站提供推荐奖励,它可以使用此变量来跟踪用户是否来自联盟站点。 $http_referer 的值由浏览器发送的 HTTP 头决定。如果浏览器不发送 Referer 头(例如由于用户的隐私设置),该变量将为空。该变量的典型值包括网站的 URL,但在安全上下文中或跨协议重定向时(例如从 HTTPS 到 HTTP)也可能不存在。因此,在配置或脚本中处理该变量可能为空的情况以避免意外行为非常重要。 此外,在将此变量用于记录或决策等用途时,必须确保对其进行适当的清理或校验,因为客户端可能会篡改它。该变量通常用于访问控制、日志记录或重定向规则,从而基于请求来源实现更细粒度的控制。

配置示例

location /example {
    if ($http_referer ~* "example.com") {
        return 403;
    }
}

子系统

http

可缓存

上下文

http, server, location, if

如果客户端没有发送 Referer 头,$http_referer 将为空,如果未正确处理,可能会导致意外行为。

依赖此变量进行访问控制可能有风险,因为用户可以修改他们的 Referer 头,或使用会排除该头的隐私工具。