仅当 cookie 存在时,如何有条件地覆盖 nginx 中的 header?
How to conditionally override a header in nginx only if a cookie exist?
有没有办法检查 nginx
中是否存在特定的 cookie?
现在我有一个像下面这样的部分来从 cookie 设置 header:
proxy_set_header x-client-id $cookie_header_x_client_id;
我想检查那个 cookie 是否存在然后设置 header,否则不要覆盖 header。
我试过:
if ($cookie_header_x_client_id) {
proxy_set_header x-client-id $cookie_header_x_client_id;
}
但它不起作用并给出以下错误:
"proxy_set_header" directive is not allowed here in /etc/nginx/sites-enabled/website:45
有什么解决办法吗?
if
context in nginx. This is related to the fact that if
is part of the rewrite
模块中允许的指令数量有限;因此,在其上下文中,您只能使用模块文档中特别概述的指令。
解决这个 "limitation" 的常见方法是使用中间变量建立状态,然后使用像 proxy_set_header
这样的中间变量来使用指令:
set $xci $http_x_client_id;
if ($cookie_header_x_client_id) {
set $xci $cookie_header_x_client_id;
}
proxy_set_header x-client-id $xci;
有没有办法检查 nginx
中是否存在特定的 cookie?
现在我有一个像下面这样的部分来从 cookie 设置 header:
proxy_set_header x-client-id $cookie_header_x_client_id;
我想检查那个 cookie 是否存在然后设置 header,否则不要覆盖 header。
我试过:
if ($cookie_header_x_client_id) {
proxy_set_header x-client-id $cookie_header_x_client_id;
}
但它不起作用并给出以下错误:
"proxy_set_header" directive is not allowed here in /etc/nginx/sites-enabled/website:45
有什么解决办法吗?
if
context in nginx. This is related to the fact that if
is part of the rewrite
模块中允许的指令数量有限;因此,在其上下文中,您只能使用模块文档中特别概述的指令。
解决这个 "limitation" 的常见方法是使用中间变量建立状态,然后使用像 proxy_set_header
这样的中间变量来使用指令:
set $xci $http_x_client_id;
if ($cookie_header_x_client_id) {
set $xci $cookie_header_x_client_id;
}
proxy_set_header x-client-id $xci;