rewrite_request_cookie

`rewrite_request_cookie` 指令根据指定条件修改已有 cookie 的值。

语法rewrite_request_cookie cookie_name new_value [if=condition];
默认值none
上下文http, server, location
参数2-3

说明

rewrite_request_cookie 指令属于 NGINX 的 Fine-grained request cookies control module,提供在请求处理阶段根据定义的条件调整 cookie 值的能力。该指令接受两个或三个参数:要重写的 cookie 名称、要赋予的新值,以及一个可选的条件,用于确定何时执行重写。当指定的 cookie 存在于请求中时,其值将被替换为指定的新值;如果 cookie 未出现,则该指令不会生效,除非显式包含了条件子句,该子句可根据变量状态启用指令的操作。

rewrite_request_cookie 的行为可以通过使用 if 参数提供附加条件来影响。这允许仅在特定情况下执行重写,从而对 cookie 的操作增加粒度和控制。例如,如果条件求值为 false 或指定的 cookie 不存在,则不会执行重写,从而保留原始请求的 cookie 值。确保正确的语法和结构非常重要,以避免在响应处理时出现错误或意外行为,尤其是在配置块中链接多个指令调用时。

该指令在应用需要根据请求路径中定义的逻辑动态更新某些 cookie 值的场景中特别有用,并且可以帮助有效管理用户会话和认证流程。

配置示例

location / {
    rewrite_request_cookie session_id new_value if=$http_session_active;
}

确保指定的 cookie 名称区分大小写,因为在 HTTP 头中 cookie 名称的大小写不同会被视为不同项。

在使用可选条件时,确认其是否被正确求值,以决定是否应执行 rewrite。

如果 cookie 不存在,为其编写规则不会创建该 cookie,可能导致令人困惑的状态。

← 返回所有指令