我目前正在使用 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
重定向到移动设备的子域名(具有不同的缓存策略)?