我在下面的拱门后面有一些网络内容,我需要为桌面和移动客户端提供不同的内容。
客户> AWS Cloudfront> Nginx> ...
cloudfront具有识别用户代理的内置功能,并且可以将其统一为4个特殊标头(例如CloudFront-Is-Desktop-Viewer),这些标头可以是true或false。
在Nginx上我尝试根据这些标题决定要投放哪些内容。 例如:
location / {
if ($http_CloudFront-Is-Desktop-Viewer = true) {
proxy_pass http://upstream;
break;
}
root /var/www/static/en-US;
try_files $uri /index.html;
}
所以在上面的情况下,如果CloudFront-Is-Desktop-Viewer值为true,它应该转到上游,如果它是假的或者不存在,则从nginx获取静态文件。
但由于某种原因,我总是从nginx获取静态文件。 我确定此标题正在转发,我甚至尝试使用标题修饰符直接从Chrome发送它。
我错过了什么?
非常感谢答案 0 :(得分:0)
试试这个变量:
$ http_cloudfront_is_desktop_viewer
From manual about embedded variables:
$ http_name nginx
任意请求头字段;变量名的最后一部分是 字段名称转换为小写,短划线替换为 下划线