我想添加一个请求标头,指示请求是来自桌面客户端还是移动客户端。
我尝试在服务器块中添加它
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";
}
Run Code Online (Sandbox Code Playgroud)
但nginx -t回应"if" directive is not allowed here
我可以从各种帖子中了解到if在 Nginx 中无法像您想象的那样工作,但我不确定其他方法来解决这个问题。
将这个简单的逻辑移入应用程序在这里不是一个选项,因为 Nginx 将需要它作为缓存键。
小智 5
您可以通过 map 指令而不是 if 来执行此操作。
map $http_user_agent $device_category {
default "desktop";
"~*ipad" "desktop";
"~*mobile|phone" "mobile";
}
Run Code Online (Sandbox Code Playgroud)
然后在您的位置块中:
proxy_set_header X-Device-Category $device_category;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |