Vesta 2.0 is coming soon! See our progress update: https://vestacp.com/docs/vesta-2-update
Nginx+php-fpm cache ЧПУ?
-
- Posts: 39
- Joined: Wed Jul 27, 2016 8:01 pm
Nginx+php-fpm cache ЧПУ?
Подскажите пожалуйста, как закешировать ЧПУ-ные страницы.
Движок DLE, кто знает там все криворуко сделано, и потому дохера всяких рерайтов надо писать, если мне добавить в локейшн с .php то кешируються только php файлы, а мне надо чтобы ЧПУ-ные страницы кешировались.
Куда мне надо добавить вот эту конструкцию, чтобы закешировать .html URL
Движок 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;
-
- Posts: 39
- Joined: Wed Jul 27, 2016 8:01 pm
Re: Nginx+php-fpm cache ЧПУ?
Вообщем сам и отвечу. Проблема бы с заголовками, надо игнорировать заголовки Cache-Control Expires.
Правильный конфиг, вставлять в локейш с обработкой php.
В заголовках появится строка X-FastCGI-Cache - принимает значение MISS или HIT. HIT- значить страница закеширована.
Ну и конечно можно вставлять блоки для игнорирования кэша определенных страниц, например админки и тп.
Например:
Да и не забываем в главную секцию http прописать зону кеша. (/etc/nginx/nginx.conf):
Правильный конфиг, вставлять в локейш с обработкой 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;
Ну и конечно можно вставлять блоки для игнорирования кэша определенных страниц, например админки и тп.
Например:
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;
}
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";