加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

if-statement-仅在存在cookie的情况下如何有条件地覆盖nginx中的

发布时间:2020-12-13 20:59:17 所属栏目:Nginx 来源:网络整理
导读:有没有办法检查 nginx 中是否存在特定的cookie? 现在,我有一个类似下面的部分来设置cookie的标题: proxy_set_header x-client-id $cookie_header_x_client_id; 我想检查该cookie是否存在,然后设置标题,否则不要覆盖标题. 我试过了: if ($cookie_header_x_

有没有办法检查nginx中是否存在特定的cookie?

现在,我有一个类似下面的部分来设置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

有什么办法吗?

最佳答案
在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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读