$cookie_*

以 $cookie_ 为前缀的变量用于访问客户端发送的 HTTP cookie 的值。 — NGINX Core (HTTP)

$cookie_* NGINX Core (HTTP)

说明

在 NGINX 中,以 $cookie_ 为前缀的变量可以方便地访问客户端在 HTTP 请求中设置的 cookie 值。当客户端向 NGINX 服务器发送请求时,可能会包含各种 cookie,这些 cookie 用于存储用户特定信息、会话详情或偏好设置。通过引用 $cookie_(其中 是 cookie 的具体名称),NGINX 会从请求的 cookie 中提取相应的值。 该机制使得可以基于存储在 cookie 中的用户特定数据生成动态内容。例如,如果客户端发送了名为 'user_id' 的 cookie,则可以在配置中通过 $cookie_user_id 来访问它。当该 cookie 存在时,变量返回其值;如果不存在,则返回空字符串。此功能在 Web 应用中被广泛使用,用于根据客户端之前的交互或偏好定制响应。 此外,cookie 变量可以在不同的上下文中使用,例如在 location 或 server 块中,从而根据用户状态进行条件配置和定制化的错误处理。不当处理 cookie 值(例如不验证用户输入)可能导致安全漏洞,因此在使用时必须谨慎管理。

配置示例

server {
    listen 80;
    server_name example.com;

    location / {
        if ($cookie_user_id) {
            add_header X-User-ID $cookie_user_id;
        }
    }
}

子系统

http

可缓存

类型

前缀变量

上下文

http, server, location, if, limit_except

请确保 cookie 名称不包含特殊字符或空格,因为这可能导致不可预期的行为。

请注意,缺失的 cookie 将导致空字符串,这可能会影响条件语句中的逻辑。

如果启用了缓存,请确保对 cookie 进行适当管理,以避免基于用户会话返回过时的响应。