Назад | Перейти на главную страницу

Требуется набор лаков http.host squirreliness

У меня есть сайт www.whatsthatbug.com, обслуживаемый через varnish / nginx / php-fpm. Я использую wordpress с плагином wptouch pro. Этот плагин обслуживает мобильную версию сайта для мобильных пользователей.

Вот как я это делаю в Varnish. Кажется, он работает нормально, если вы переходите непосредственно на m.whatsthatbug.com из мобильного браузера, и если вы переходите на любую страницу, кроме главной, с помощью домена www.whatsthatbug.com. Но если вы перейдете на главную страницу (просто www.whatsthatbug.com) из мобильного браузера, вам будет доступна обычная версия сайта. Я здесь что-то явно не так делаю? Какие-либо предложения?

sub vcl_recv {
    if (req.http.host ~ "m.whatsthatbug.com") {
      set req.http.user-agent = "iphone";
    }

    if ( req.http.user-agent ~
      "(.*iphone.*|.*ipod.*|.*incognito.*|.*webmate.*|.*android.*|.*dream.*|.*cupcake.*|.*froyo.*|.*blackberry9500.*|.*blackberry9520.*|.*blackberry9530.*|.*blackberry9550.*|.*blackberry 9800.*|.*blackberry 9780.*|.*iemobile/7.0.*|.*webos.*|.*s8000.*|.*bada.*|.*googlebot-mobile.*)" )
    {
      set req.http.host = "m.whatsthatbug.com";
    }

    if (req.request == "PURGE") {
            if (!client.ip ~ purge) {
                    error 405 "Not allowed.";
            }
            return(lookup);
    }
    if (req.url ~ "^/$") {
           unset req.http.cookie;
    }
}

Если вы используете Varnish 2.1 или новее (что вам следует), проблема, вероятно, в том, что регулярное выражение в вашем VCL чувствительно к регистру. Фрагмент из Varnish 2.1 FAQ

Регулярные выражения чувствительны к регистру или нет? Могу я его изменить?

В версии 2.1 и новее в регулярных выражениях по умолчанию учитывается регистр. В более ранних версиях регистр не учитывался.

Чтобы изменить это для одного регулярного выражения в 2.1, используйте (? I) в начале.

См. Справочные страницы PCRE для получения дополнительной информации.

Я могу сказать, что используемый вами VCL не подходит, например, для iPhone, который может идентифицировать себя таким образом;

Mozilla / 5.0 (iPhone; U; ЦП, например Mac OS X; en) AppleWebKit / 420 + (KHTML, например Gecko) Версия / 3.0 Mobile / 1A543a Safari / 419.3