Maxim Dounin
August 03, 2022 04:14PM
Hello!

On Wed, Aug 03, 2022 at 10:24:13AM -0400, milov wrote:

> Есть код
>
> set $no_cache 0;
>
> if ($request_method = POST){set $no_cache 1;}
> if ($http_host ~* success.html$){set $no_cache 1;}
> if ($remote_addr ~* ^(192.168.0*)$){set $no_cache 1;}
>
> # Не берется из кеша
> fastcgi_cache_bypass $no_cache;
>
> # Не сохраняется в кеш
> fastcgi_no_cache $no_cache;
>
> Ни один if не срабатывает, т.е. сохраняет в кеш и берёт из кеша. Куда
> смотреть, копать?

А должны?

Первый if не имеет смысла, т.к. POST-запросы не кэшируются по
умолчанию (см. http://nginx.org/r/fastcgi_cache_methods/ru). Его
явно можно просто выкинуть.

Второй if не имеет смысла, так как в переменной $http_host
содержится заголовок запроса Host, и там указывается только
доменное имя и порт (если этот заголовок вообще присутствует в
запросе), так что вряд ли он содержит что-либо похожее на
"success.html$". Возможно, имелась в виду переменная $uri (хотя
лучше, конечно, для подобных вещей делать отдельный location без
кэширования).

Третий if не имеет смысла, так как написанному регулярному
выражению (начало строки, "192", любой символ, "168", любой
символ, любое количество символов "0", конец строки) не может
соответствовать IP-адрес. Правильно что-нибудь вроде
"^192\.168\.0". Ну или можно заменить на geo
(http://nginx.org/r/geo/ru), но для одной сети непринципиально.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-leave@nginx.org
Subject Author Posted

Re: set $no cache 0 не работает.

Maxim Dounin August 03, 2022 04:14PM

Re: set $no cache 0 не работает.

milov April 11, 2023 10:27AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 151
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready