5 votes

Mise en cache de nginx par agent utilisateur

J'utilise actuellement nginx comme proxy inverse avec la mise en cache activée.

Toutefois, le site principal présente deux mises en page différentes, en fonction de l'agent utilisateur (mobile ou non).

J'ai essayé quelque chose de similaire :

    # 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;

Cependant, nginx donne une erreur, indiquant que proxy_cache ne peut pas être utilisé dans une structure if.

Y a-t-il un autre moyen de servir à partir d'un cache différent selon le navigateur ?

Merci, Tuinslak

3voto

Dan Points 205

Pourquoi utiliser des caches différents ? Il serait probablement suffisant de définir votre clé de cache sur la base de $iphone_request variable ?

proxy_cache_key "$iphone_request$uri";

1voto

Kuroki Kaze Points 345

Redirection vers un sous-domaine pour les appareils mobiles (avec une politique de mise en cache différente) ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X