根据 cookie 添加标头

根据 cookie 添加标头

我想添加一个请求标头,指示请求是来自桌面客户端还是移动客户端。

我尝试将其添加到服务器块中

if ($http_user_agent ~* 'mobile|phone') && ($http_user_agent !~* 'ipad') {
  proxy_set_header       X-Device-Category "mobile";
} else {
  proxy_set_header       X-Device-Category "desktop";
}

nginx -t回应"if" directive is not allowed here

我可以从各种帖子中了解到ifNginx 的工作方式并不像你想象的那样,但我不确定是否有其他方法可以解决这个问题。

将这个简单的逻辑移到应用程序中在这里不是一个选择,因为 Nginx 将需要它作为缓存键。

答案1

您可以通过 map 指令而不是 if 来执行此操作。

map $http_user_agent $device_category {
    default "desktop";
    "~*ipad" "desktop";
    "~*mobile|phone" "mobile";
}

然后在您的位置块中:

proxy_set_header X-Device-Category $device_category;

相关内容