Среда , Май 23 2018
Home » Web сервера » Кэширование в nginx «nginx proxy cache» wordpress

Кэширование в nginx «nginx proxy cache» wordpress

nginx cache proxy wordpress конфигДля создания сайтов я пользуюсь движком WordPress поэтому опишу как ускорить ваш сайт с помощью vps и сервера nginx с настроенным proxy chache . Еще года три назад я перестал использовать apache2, и полностью перешел на nginx признав его более быстрым, менее прожорливым, и более отказоустойчивым. На данный момент nginx поддерживает http2, но особого прироста скорости я не заметил, поэтому использую старый добрый http1.1 и все летает. Про настройку http2 на nginx я напишу позднее, а сейчас же к основной теме, и настроем nginx под движок wordpress.

Nginx proxy cache + wordpress конфиг

И так у нас уже есть установленный сервер nginx, его установку на ubuntu 16.04 мы проводили ранее, если вы следовали ей то все будет гораздо проще, и появления возможных ошибок будет можно избежать.
Создаем папку для кэша

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

Открываем ранее отредактированный файл виртуального хоста

nano /etc/nginx/sites-available/default

Чистим его и вставляем

proxy_cache_path /home/my/cache levels=1:2 keys_zone=mycache:160m inactive=7d max_size=1024m;

upstream myproxy {
        ip_hash;
        server 127.0.0.100:88;
        keepalive 32;
    }

server {
listen 80;
        server_name ваш_домен.ru  www.ваш_домен.ru;
        root /home/www;
        index index.php index.html;
        client_max_body_size 90m;

gzip                    on;
gzip_http_version       1.0;
gzip_min_length         1100;
gzip_buffers           16 8k;
gzip_types
    # text/html is always compressed by HttpGzipModule
    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 / {
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
		set $do_not_cache 1;
	}
	proxy_no_cache $do_not_cache;
	proxy_cache_bypass $do_not_cache;
        proxy_pass http://myproxy;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
	proxy_cache mycache;
        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;
        proxy_cache_valid 200 302 3d;
        proxy_read_timeout  300;
        }



location ~* wp\-.*\.php|wp\-admin {
	proxy_pass http://myproxy;
}


location ~* \/[^\/]+\/(feed|\.xml)\/? {
	proxy_pass http://myproxy;
}
}

server {
        listen 88;
        server_name 127.0.0.1;
        root /home/www;
        index index.php index.html;


location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|woff|ttf|otg|woff2)$ {
        root /home/www;
	access_log off;
	expires max;
	add_header Last-Modified: $date_gmt;
}

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


location ~ \.php$ {
        try_files $uri =404; 
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        include fastcgi.conf;
        include fastcgi_params;
        fastcgi_index index.php;
        }

if ( $http_user_agent ~* (nmap|nikto|wikto|sf|sqlmap|bsqlbf|w3af|acunetix|havij|appscan) ) {
        return 403;
        }
}

Вставили этот конфиг в конфигурационный файл хоста. Перезапускаем nginx

service nginx restart

Проверяем работу. При первой загрузке страницы заголовок X-Cache будет показывать MISS, при повторной загрузке страницы Вы увидите X-Cache HIT
Проверить ответ сервера можно с помощью команды:

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

вы увидите примерно следующий ответ

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 28 Sep 2016 12:17:43 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

Если все так значит все работает. Радуемся, пользуемся, говорим мне спасибо, задаем вопросы.

Немного о директивах значение которых вы можете поменять на свои

keys_zone=mycache :
Директива указывает задаваемую вами зону, ее вы можете обозначить любым именем, например keys_zone=mycache можно поменять на wpcache или что-то другое, например ваше имя.
inactive=7d :
Данная директива задает время жизни кэша и определяет через какое время он станет неактивным.
upstream myproxy:
Данная директива дает возможность заменить адрес типа 127.0.0.1:88 на myproxy так гораздо удобнее.
proxy_cache  mycache;
Данная директива указывает на зону кэша которую вы ранее указали получается proxy_cache mycache;
max_size=1024m;
Данная директива задает максимальный размер кэша
proxy_cache_path /home/my/cache:
указывает папку кэша, вы можете заменить адрес на свой.

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

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