每个用户代理的 nginx 缓存

每个用户代理的 nginx 缓存

我目前正在使用 nginx 作为反向代理,并启用了缓存。

但是,主站点有两种不同的布局,取决于用户代理(移动或非移动)。

我尝试过类似的事情:

    # mobile users
    if ($http_user_agent ~* '(iPhone|iPod|mobile|Android|2.0\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|hiptop|IEMobile)') {
            set $iphone_request '1';
    }
    if ($iphone_request = '1') {
            proxy_cache        mobile;
    }
    if ($iphone_request = '') {
            proxy_cache        site;
    }
    proxy_cache_key    "$scheme://$host$request_uri";
    proxy_pass         http://real-site.tld;

但是,nginx 给出一个错误,指出 proxy_cache 不能在 if 结构中使用。

还有其他方法可以根据浏览器从不同的缓存提供服务吗?

谢谢,Tuinslak

答案1

为什么要使用不同的缓存?可能根据变量定义缓存键就足够了$iphone_request

proxy_cache_key "$iphone_request$uri";

答案2

重定向到移动设备的子域名(具有不同的缓存策略)?

相关内容