Page 1 of 1
Nginx+php-fpm cache ЧПУ?
Posted: Tue Dec 19, 2017 9:34 pm
by aluminoter
Подскажите пожалуйста, как закешировать ЧПУ-ные страницы.
Движок DLE, кто знает там все криворуко сделано, и потому дохера всяких рерайтов надо писать, если мне добавить в локейшн с .php то кешируються только php файлы, а мне надо чтобы ЧПУ-ные страницы кешировались.
Куда мне надо добавить вот эту конструкцию, чтобы закешировать .html URL
Code: Select all
fastcgi_cache mycache;
fastcgi_cache_valid 200 301 302 60m;
add_header X-FastCGI-Cache $upstream_cache_status;
Re: Nginx+php-fpm cache ЧПУ?
Posted: Thu Dec 21, 2017 8:45 pm
by aluminoter
Вообщем сам и отвечу. Проблема бы с заголовками, надо игнорировать заголовки Cache-Control Expires.
Правильный конфиг, вставлять в локейш с обработкой php.
Code: Select all
fastcgi_cache myCacheZone;
fastcgi_cache_valid 200 301 302 60m;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
add_header X-FastCGI-Cache $upstream_cache_status;
В заголовках появится строка X-FastCGI-Cache - принимает значение MISS или HIT. HIT- значить страница закеширована.
Ну и конечно можно вставлять блоки для игнорирования кэша определенных страниц, например админки и тп.
Например:
Code: Select all
location ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
#Cache everything by default
set $no_cache 0;
#Don't cache the following URLs
if ($request_uri ~* "/(admin|administrator/|login.php)")
{
set $no_cache 1;
}
#cache zone
fastcgi_cache myCacheZone;
fastcgi_cache_valid 200 301 302 60m;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
add_header X-FastCGI-Cache $upstream_cache_status;
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
fastcgi_pass 127.0.0.1:9004;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
Да и не забываем в главную секцию http прописать зону кеша. (/etc/nginx/nginx.conf):
Code: Select all
fastcgi_cache_path /etc/nginx/cache/myCacheZone levels=1:2 keys_zone=myCacheZone:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";