set_request_cookie
设置指定 cookie 的值:如果已存在则修改其值,否则创建该 cookie。
Fine-grained request cookies control
·
httpserverlocation
语法set_request_cookie cookie_name value [if=condition];
默认值none
上下文http, server, location
参数2-3
说明
set_request_cookie 指令是 ngx_http_request_cookies_filter_module 的一部分,该模块为请求中的 cookie 提供细粒度控制。该指令允许开发者在请求头中为指定名称的 cookie 设置值。如果该 cookie 已存在,指令将用新值替换其值。如果不存在,则创建一个具有指定名称和值的新 cookie。
该指令在 if 参数中接受一个可选条件,可用于控制何时应用该设置——仅当指定条件求值为 true 时才会应用。这在根据其他请求参数(例如已有的 cookies 或头部)有条件地修改 cookie 时非常有用。需要注意的是,cookie 名称区分大小写,任何更改都会在请求处理过程中传播,可能会根据应用如何处理 cookie 而影响响应行为。
该指令对上下文敏感,可在 http、server 和 location 上下文中使用,这使得根据应用的路由和状态管理需求进行灵活配置成为可能。总体而言,set_request_cookie 是在基于 NGINX 的应用中管理 cookie 状态的强大工具。
配置示例
http {
server {
listen 80;
server_name example.com;
location / {
set_request_cookie a 1;
set_request_cookie e 4 if=$http_a;
proxy_set_header Cookie $filtered_request_cookies;
proxy_pass http://127.0.0.1:8080;
}
}
}⚠
请记住,Cookie 名称区分大小写。请在命名时保持一致,以避免出现意外行为。
⚠
在使用 if 参数时,确保条件被正确定义,因为如果条件求值为 false,指令可能会被忽略。
⚠
测试和调试 Cookie 行为可能具有挑战性;请使用日志和调试工具来验证 Cookie 状态。