Четверг , Май 24 2018
Home » Web сервера » Кэширование в nginx  с помощью fastcgi cache (WordPress)

Кэширование в nginx  с помощью fastcgi cache (WordPress)

Кэширование в nginx с помощью fastcgi cache2Я уже писал про proxy cache  теперь пришел черед для fastcgi cache, данный метод кэширования не использует кэширующий proxy. Данная конфигурация будет прописана для сайта под управлением WordPress. Данная конфигурация ничем не хуже предыдущей, и прилично ускоряет работу сайта на wordpress, установка плагинов кэширования больше не нужна, с кэшировать будет сервер. И так если вы устанавливали сервер nginx, а также php7, MySQL сервер и phpmyadmin по моей инструкции все должно заработать, если вы вносили ранее какие то изменения, то я не гарантирую работоспособность этого конфига, так как некоторые директивы могут конфликтовать и выдавать ошибки. В общем если что конфиги в студию.

Fastcgi cache конфиг для wordpress

Для начала нам будет нужно создать директорию для хранения кэша сделаем это командами:

mkdir /home/my
mkdir /home/my/cache

Далее редактируем конфигурационный файл «виртуалхоста»

nano /etc/nginx/sites-available/default

Чистим от старого конфига, копируем, и вставляем этот:

fastcgi_cache_path /home/my/cache levels=1:2 keys_zone=mycache:100m inactive=10000m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
         listen 80;
         server_name wp.playserver.net;
         root /home/www;
         index index.php index.html index.htm;
         client_max_body_size 90m;

	set $skip_cache 0;

	if ($request_method = POST) {
		set $skip_cache 1;
	}   
	if ($query_string != "") {
		set $skip_cache 1;
	}   

	if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
		set $skip_cache 1;
	}   

	if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
		set $skip_cache 1;
	}

gzip                    on;
gzip_http_version       1.0;
gzip_min_length         1100;
gzip_buffers           16 8k;
gzip_types
    text/css
    text/javascript
    text/xml
    text/plain
    text/x-component
    application/javascript
    application/x-javascript
    application/json
    application/xml
    application/rss+xml
    application/atom+xml
    font/truetype
    font/opentype
    application/vnd.ms-fontobject
    image/svg+xml;
gzip_proxied            expired no-cache no-store private auth;
gzip_disable            "msie6";
gzip_vary               on;
gzip_comp_level         5;

location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|css|js|woff2)$ {
		access_log off;	log_not_found off; expires max;
	}

location / {
		try_files $uri $uri/ /index.php?$args;
	} 

location ~ \.php$ {
	try_files $uri =404; 
	include fastcgi_params;
        include fastcgi.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	fastcgi_cache  mycache;
        fastcgi_cache_bypass $skip_cache;
	fastcgi_no_cache $skip_cache;
	fastcgi_cache_valid  60m;
	fastcgi_index index.php;
        add_header                  X-Content-Type-Options nosniff;
        add_header                  X-XSS-Protection "1; mode=block";
        add_header                  X-Frame-Options DENY;
        add_header X-Cache $upstream_cache_status;
        }
}

Сохраняем. Делаем рестарт сервера nginx

service nginx restart

Если все нормально сервер перезапустился нормально можно проверить работоспособность кэширования вашей главной страницы с помощью команды CuRL

curl -X GET -I вашсайт.ru

Если все нормально при первой загрузке страницы вы увидите в ответе заголовка X-Cache MISS при повторной загрузке X-Cache HIT — это будет значить что страница закеширована, и взята из кэша, а команда в консоли даст такой выхлоп:

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 28 Sep 2016 16:51:29 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Link: <http://wp.playserver.net/wp-json/>; rel="https://api.w.org/"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: DENY
X-Cache: HIT

В общем все, сервер готов к работе wordpress, теперь плагины кэширования нам не нужны

Директивы значения которых можно изменить на свои
keys_zone=mycache Директива указывает заданную вами зону. Ее можно переименовать в любую другую например keys_zone=vasya
inactive=7d Данная директива указывает на то через какое время кэш станет неактивным.
fastcgi_cache mycache Данная директива указывает на зону кэша которую вы ранее указали в keys_zone=mycache
fastcgi_cache_path /home/my/cache указывает папку кэша, вы можете заменить адрес на свой.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *