Объяснить как работает кеш Nginx

D
На сайте с 28.06.2008
Offline
1108
544

Хочу полностью понимать конфиг Nginx своего сайта (конфиг изначально сделан не мной). В частности секцию кеширования

                # Отключаем кеш
        set $nocache $cookie_joomla_user_state;

                if ($request_uri ~ /index.php)
                {
                        set $nocache 1;
                }
                if ($request_uri ~ /component)
                {
                        set $nocache 1;
                }

                if ($arg_cached = "1")
                {
                        set $nocache 0;
                }
        fastcgi_no_cache $nocache;
        fastcgi_cache_bypass $nocache;

Здесь мне понятно все кроме:

1. самая первая строка, set $nocache $cookie_joomla_user_state;   - я так понимаю создаем переменную  $nocache и заносим в нее данные ? или что?  Джумла действительно для авторизованых юзеров генерирует куку с названием "joomla_user_state"  но непонятно где в Nginx это проверяется (то что кука установлена)?

2. Что за секция, нигде больше $arg_cached не встречается. Что это может быть? Я так понимаю если  arg_cached=1 то кешируем, но не понятно что это такое.

                if ($arg_cached = "1")
                {
                        set $nocache 0;
                }


M
На сайте с 17.09.2016
Offline
132
#1

1) Проверка на существование куки не осуществляется, но если её нет, то в переменной будет пусто, этого достаточно, чтобы условие не выполнилось

2) $arg_ имяаргумент имя в строке запроса

Т.е. url/script.php?cached=1

D
На сайте с 28.06.2008
Offline
1108
#2
Mobiaaa  большое спасибо, теперь все понятно!
D
На сайте с 28.06.2008
Offline
1108
#3

Продолжаю гуглить тему и все же, насколько я понимаю строка

set $nocache $cookie_joomla_user_state;

Это и есть проверка на наличие куки, а название куки все что идет после $cookie_

Согласно докам https://nginx.org/ru/docs/http/ngx_http_core_module.html

$cookie_имя
cookie имя
M
На сайте с 17.09.2016
Offline
132
#4
Dram #:

Продолжаю гуглить тему и все же, насколько я понимаю строка

Это и есть проверка на наличие куки, а название куки все что идет после $cookie_

Согласно докам https://nginx.org/ru/docs/http/ngx_http_core_module.html

Если куки нет, то в nocache будет пусто

Если в куке пусто, то в nocache будет пусто

Я бы не назвал это проверкой наличия куки

D
На сайте с 28.06.2008
Offline
1108
#5
Mobiaaa #:

Если куки нет, то в nocache будет пусто

Вот это неверно. У меня сайт загружает несколько кук, в том числе и куку с названием "joomla_user_state" (если ты авторизован). 

Так вот - в  nocache будет пусто, только если нет ИМЕННО этой куки.

I7
На сайте с 12.06.2008
Offline
370
#6
Dram #:

Так вот - в  nocache будет пусто, только если нет ИМЕННО этой куки.

Иного никто и не говорил вообще-то) 

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий