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

Nginx - более короткий срок «истекает» для совпадения аргументов

Я использую перезапись вот так

    if (!-e $request_filename) {
            rewrite ^/(en|ga)?/?(.*)$ /index2.php?cultureKey=$1&mq=$2 last;
    }

но после того, как мне нужно, чтобы некоторые переписанные URL-адреса были кэшированы в течение 30 секунд. Оставшиеся запросы fast_cgi должны быть 5 минут.

    fastcgi_cache_valid   200 302  5m;

    expires 5m;
    if ($args ~* (dynamic\.html)){
        expires 30s;
    }

Я попытался переместить их, но либо dynamic.html, либо другие файлы по-прежнему кешируются через 30 секунд, либо они оба истекают через 30 секунд.

Как сделать, чтобы dynamic.html (переписанный) кешировался на 30 секунд, а оставшиеся файлы - на 5 минут?

Спасибо

$args это переменная, содержащая параметры запроса на GETВы уверены, что не после $request_uri или $uri? Возможно, лучше использовать блок местоположения:

location ~* dynamic.html {
    expires 30s
}

но это зависит от остальной части вашей конфигурации, поэтому YMMV.

Я думаю, что "если" вызывает проблемы. Вы должны прочитать это http://wiki.nginx.org/IfIsEvil