タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

nginxでPC/スマホ/ガラケー別にキャッシュする

こんなかんじで、これと組み合わせて、それぞれキャッシュするようにしてます。

判定条件はmt-plugin-httpuseragentと同じです。

set $ua pc;
set $general 1;
set $smartphone 0;
set $featurephone 0;


set $docomo 0;
set $au 0;
set $softbank 0;
set $iphone 0;
set $android 0;
set $ipad 0;
set $androidtab 0;

if ($http_user_agent ~* DoCoMo) {
    set $ua docomo;
    set $docomo 1;
    set $general 0;
    set $featurephone 1;
}
if ($http_user_agent ~* UP\.Brower|KDDI-) {
    set $ua au;
    set $au 1;
    set $general 0;
    set $featurephone 1;
}
if ($http_user_agent ~* J-PHONE|Vodafone|SoftBank) {
    set $ua softbank;
    set $softbank 1;
    set $general 0;
    set $featurephone 1;
}
if ($http_user_agent ~* iPhone) {
    set $ua iphone;
    set $iphone 1;
    set $general 0;
    set $smartphone 1;
}
if ($http_user_agent ~* iPad) {
    set $ua ipad;
    set $ipad 1;
}
if ($http_user_agent ~* Android) {
    set $android 1;
    set $androidtab 1;
}
if ($http_user_agent ~* Mobile) {
    set $androidtab 0;
}
if ($http_user_agent ~* SC-01C) {
    set $androidtab 1;
    set $android 0;
}
if ($android = 1) {
    set $ua android;
    set $general 0;
    set $smartphone 1;
}
if ($androidtab = 1) {
    set $ua androidtab;
}

if ($request_method != GET) {
    set $do_not_cache 1;
}
if ($uri !~* "(/|.(jpg|png|gif|jpeg|css|js|swf|pdf|htm|html))$") {
    set $do_not_cache 1;
}

#if ($remote_addr ~ "^(XXX\.XXX\.XXX\.XXX|YYY.YYY.YYY.YYY)$") {
#    set $do_not_cache 1;
#}

proxy_cache_key $ua$scheme$host$uri$is_args$args;
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_cache cache_static_file;
proxy_cache_valid 200 5m;
proxy_cache_valid any 1m;