根据Nginx中的标头值提供不同的内容

时间:2016-11-30 17:26:51

标签: web-services nginx web http-headers amazon-cloudfront

我在下面的拱门后面有一些网络内容,我需要为桌面和移动客户端提供不同的内容。

客户> 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发送它。

我错过了什么?

非常感谢

1 个答案:

答案 0 :(得分:0)

试试这个变量:

$ http_cloudfront_is_desktop_viewer

From manual about embedded variables

  

$ http_name nginx

     

任意请求头字段;变量名的最后一部分是   字段名称转换为小写,短划线替换为   下划线