nginx 1.11 + fast-cgi cache + map + ssi

Дмитрий Герасимов nginx-forum на forum.nginx.org
Ср Июн 8 18:57:14 UTC 2016


Всем добрый вечер.

Использую на сайте кеширование fast-cgi запросов отдельных страниц.
Страницы, которые нужно кешировать отдают X-accel-expires. Также для
некоторых страниц нужен был другой fastcgi_cache_key в зависимости от
$request_uri.

До версии 1.11 конфиг выглядел примерно так:

location ~ \.php$ {

      set $fastcgi_cache_key
$request_method|$host|$uri|$request_uri|$cookie_currency|$cookie_show_mode;

      if ($request_uri ~ ^/objekti/.+){ 
           set $fastcgi_cache_key
$request_method|$host|$uri|$request_uri|$cookie_currency|$http_x_requested_with;
      }
      if ($request_uri ~ ^/xml/yml.php){
          set $fastcgi_cache_key
$request_method|$host|$uri|$arg_type|$arg_nosim;
      }

      .........
      fastcgi_cache_key $fastcgi_cache_key;
      .........
      fastcgi_pass php-fpm;
}

И это работает.

С версии 1.11 map начал понимать несколько переменных в качестве результата.
Т.о. сделал такую секцию: 

map $request_uri $fastcgi_cache_key {
	default       
$request_method|$host|$uri|$request_uri|$cookie_currency|$cookie_show_mode;
	~^/objekti/.+ 
$request_method|$host|$uri|$request_uri|$cookie_currency|$http_x_requested_with;
	~^/xml/yml.php $request_method|$host|$uri|$arg_type|$arg_nosim;
}

Убрал set и if из php-локейшена и получил "subrequests cycle while
processing" в логах везде, где использую ssi. Вывел обе переменные - они
равны. Заранее благодарен

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,267467,267467#msg-267467



Подробная информация о списке рассылки nginx-ru