有没有办法来检查一个特定的cookie是否存在于nginx
?
现在我有一个像下面这样的部分从cookie设置标题:
proxy_set_header x-client-id $cookie_header_x_client_id;
我想检查cookie是否存在,然后设置标题,否则不要覆盖标题。
我试过了:
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
任何解决scheme
在nginx的if
语境中只允许有限数量的指令。 这与if
是rewrite
模块的一部分有关。 因此,在其上下文中,您只能使用模块文档中具体列出的指令。
围绕这个“限制”的常见方法是使用中间变量建立状态,然后使用像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;