在 nginx 反向代理中使用另一个标头的值设置 cookie 标头

在 nginx 反向代理中使用另一个标头的值设置 cookie 标头

我们正在使用一种硬件(chromecast),它似乎正在删除 cookie,但会很乐意传递自定义标头(我们从后端发出信号表示可以接受),我们想出了一个解决方法,将 cookie 数据填充到所述自定义标头中,然后将其放回到代理上的 cookie 标头中。这允许大多数客户端(遵守正常的 CORS 信号)和后端保持不变。在我的 Nginx 配置中,我目前有一个定义如下的映射:

map cookie $cookie {
    default   $http_cookie;
    ""        $http_my_token;
}

我稍后会按如下方式使用:

server {
  listen 443 ssl;
  #...
  location /myurl {
      proxy_pass http://nodeserver;
      proxy_set_header X-Forwarded-For $remote_addr;
      #...
      proxy_set_header Cookie $cookie;
 }
}

我希望此代码用“My-Token”标头中提供的值替换 Cookie 标头,但我看到的却是两个标头的值都未经更改地传递了。

答案1

map指定要检查的值是文字字符串cookie。这不是您所说的,并且尝试检查文字字符串是毫无用处的,因为它只能是其本身。

第一个参数map是要测试的值。您应该传递实际要检查的内容,而不是字符串cookie。您似乎在寻找用户代理是否正在发送 cookie。如果是这种情况,您应该使用$http_cookie

map $http_cookie $cookie {

相关内容