Как настроить кэширование FastCGI с помощью Nginx на вашем VPS или выделенном сервере

Модуль FastCGI присутствует в Nginx. Этот модуль включает в себя директивы. Динамический контент, который подается из серверной части PHP, может быть кэширован или сохранен с их использованием. Это решит вашу проблему, и вам не придется беспокоиться о дополнительных решениях для кэширования страниц и плагинах для конкретных приложений..


Настройка FastCGI Caching на вашем VPS

Прежде всего, вам нужно будет установить и настроить Nginx с PHP на вашем VPS. Теперь вам нужно отредактировать файл конфигурации виртуального хоста, для которого вы должны включить кэширование.

nano / etc / nginx / sites-enabled / vhost

Специальное примечание: зайдите на страницу Best VPS хостинга HostAdvice, чтобы найти ведущих веб-хостов в этой категории, включая отзывы экспертов и пользователей..

Вне сервер {}  директива, вам нужно будет добавить эти строки в начало файла:

fastcgi_cache_path / etc / nginx / уровни кэша = 1: 2 keys_zone = FASTCACHE: 100 м неактивно = 60 м;
fastcgi_cache_key "$ Схема $ REQUEST_METHOD $ хоста $ REQUEST_URI";

Вы увидите директиву fastcachepath, в которой указывается расположение кэша, размер, имя зоны памяти, уровни подкаталогов и неактивный таймер..

Хотя вы можете свободно использовать любое место на жестком диске, но при выборе размера вам нужно быть предельно осторожным, оно должно быть меньше, чем ОЗУ вашего vps и Swap вместе взятых. Если размер превышает этот критерий, вы получите сообщение об ошибке «Невозможно выделить память». Необходимо просмотреть параметры уровней в разделе очистки – Nginx удаляет кэш, если к нему не обращаются в течение времени, указанного в параметре «неактивно».

Хэширование имен файлов кэша указывается в директиве fastcgicachekey. На основании его директивы, доступ к файлу зашифрован с помощью MD5 с помощью Nginx.

Теперь директива location, которая передает PHP-запрос, должна быть переведена в php5-fpm. Вам нужно будет добавить эти строки в «location ~ .php $ {}»:

fastcgi_cache FASTCACHE;
fastcgi_cache_valid 200 60m;

В приведенных выше строках «fastcgi_cache» ссылается на имя зоны памяти, которое уже упоминалось нами в директивах «fastcgicache_path», и кеш также хранится в этой области..

Кэшированные объекты по умолчанию хранятся в Nginx в течение периода времени, указанного одним из приведенных здесь заголовков: X-Accel-Expires, Expires, Cache-Control..

Если эти заголовки отсутствуют, срок действия кэша по умолчанию определяется директивой fastcgicachevalid, представленной в приведенной выше строке. В соответствии с нашей конфигурацией в приведенных выше строках кэширование выполняется только для ответов с кодом состояния 200..

Тест конфигурации

Теперь нужно выполнить тест конфигурации.

сервис nginx configtest

Перезагрузите Nginx, если все в порядке

сервис nginx reload

Теперь вы увидите файл vhost, который выглядит так:

fastcgi_cache_path / etc / nginx / уровни кэша = 1: 2 keys_zone = FASTCACHE: 100 м неактивно = 60 м;
fastcgi_cache_key "$ Схема $ REQUEST_METHOD $ хоста $ REQUEST_URI";
сервер {
слушай 80;
root / usr / share / nginx / html;
index index.php index.html index.htm;
имя_сервера yourdomainname.com;

расположение / {
try_files $ uri $ uri / /index.html;
}
location ~ \ .php $ {
try_files $ uri = 404;
fastcgi_pass unix: /var/run/php5-fpm.sock;
fastcgi_index index.php;
включить fastcgi_params;
fastcgi_cache FASTCACHE;
fastcgi_cache_valid 200 60m;
}
}

Тестирование FastCGI-кэширования на вашем VPS

Сначала вам нужно будет создать файл PHP, который выводит временную метку UNIX.

/usr/share/nginx/html/test.php

Затем вставьте следующее:

<?PHP
время эха ();
?>

Используйте ваш веб-браузер или curl, чтобы запросить этот файл несколько раз.

root @ server: ~ # curl http: //localhost/test.php; echo
1372986152
root @ server: ~ # curl http: //localhost/test.php; echo
1372986152
root @ server: ~ # curl http: //localhost/test.php; echo
1372986152

Если вам повезло увидеть одну и ту же метку времени для всех запросов, то кэширование работает надлежащим образом.

Далее вам нужно будет найти кеш этого запроса, выполнив рекурсивный листинг расположения кеша..

root @ vps: ~ # ls -lR / etc / nginx / cache /
/ И т.д. / Nginx / кэш /:
всего 0
drwx —— 3 www-data www-data 60 окт. 28 18:53 e

/ И т.д. / Nginx / кэш / е:
всего 0
drwx —— 2 www-data www-data 60 окт. 28 18:53 18

/ И т.д. / Nginx / кэш / е / 18:
всего 4
-rw ——- 1 www-data www-data 117 28 октября 18:53 b777c8adab3ec92cd43756226caf618e

Если вы хотите добавить к ответу заголовок «X-Cache», вы можете сделать это с помощью Nginx. Это будет указывать, был ли кэш пропущен или попал.

Это должно быть добавлено выше сервер {} директива:

add_header X-Cache $ upstream_cache_status;

Теперь посмотрите новый заголовок, перезагрузив сервис Nginx и выполнив подробный запрос с помощью curl.

root @ vps: ~ # curl -v http: //localhost/test.php
* О подключении () к локальному порту 80 (# 0)
* Попытка 127.0.0.1…
* связаны
* Подключен к локальному (127.0.0.1) порту 80 (# 0)
> GET /test.php HTTP / 1.1
> Пользователь-агент: curl / 7.26.0
> Хост: localhost
> Принять: * / *
>
* HTTP 1.1 или новее с постоянным соединением, поддерживается конвейерная обработка
< HTTP / 1.1 200 ОК
< Сервер: nginx
< Дата: вторник, 27 апреля 2017 г. 09:10:45 GMT
< Тип контента: текст / HTML
< Передача-Кодировка: чанки
< Подключение: keep-alive
< X-Cache: HIT
<
* Соединение № 0 с локальным хостом осталось нетронутым
1373035828 * Закрытие соединения № 0

Установка исключений кеша

В некоторых случаях, например при аутентификации, страницы не должны кэшироваться. На основании таких переменных, как «requesturi», «rquestmethod» и «http_cookie», мы можем исключить такое содержимое из кэша.

Ниже приведен пример конфигурации, которая должна использоваться в сервер {}контекст:

установить $ no_cache 0;
if ($ request_method = POST)
{
установить $ no_cache 1;
}
if ($ query_string! = "")
{
установить $ no_cache 1;
}
if ($ request_uri ~ * "/(administrator/|login.php)")
{
установить $ no_cache 1;
}
если ($ http_cookie = "PHPSESSID")
{
установить $ no_cache 1;
}

Следующие строки должны быть вставлены в  location ~ .php $ {} чтобы применить переменную $ no_cache к соответствующим производным:

fastcgi_cache_bypass $ no_cache;
fastcgi_no_cache $ no_cache;

Существующий кэш для запросов, связанных с условиями, установленными нами выше, игнорируется директивой «factcgicachebypass», в то время как если указанные требования выполнены, «fastcginocache» останавливает кеширование запроса.

Очистка кеша

Переменные, которые мы устанавливаем для производных «fastcgicachekey», являются основой соглашения об именах кэша..

fastcgi_cache_key "$ Схема $ REQUEST_METHOD $ хоста $ REQUEST_URI";

Согласно этим переменным, это были бы фактические значения, когда мы запросили «http: // localhost / time / php»:

fastcgi_cache_key "httpGETlocalhost / test.php";

Следующая строка будет выводиться, когда эта строка передается через хеширование MD5:

9552f2a3f53b52db6409e47b57ff63c0

Имя файла кэша будет сформировано этим. Так как мы установили «уровни = 1: 2» для подкаталогов, первый уровень каталога будет назван первым символом из последней строки MD5, а второй уровень будет иметь последние два символа после первого уровня..

Таким образом, следующая структура каталогов будет следующей:

/ etc / nginx / cache / e / 18 / 9552f2a3f53b52db6409e47b57ff63c0

Теперь все, что вам нужно сделать, это разработать скрипт очистки на любом языке по вашему желанию на основе этого кэша. Для очистки кэша POSTed URL ниже приведен PHP-скрипт.

/usr/share/nginx/html/purge.php

Вставить

<?PHP
$ cache_path = ‘/ etc / nginx / cache /’;
$ url = parse_url ($ _ POST [‘url’]);
если (! $ URL)
{
echo ‘Неверный URL введен’;
умереть();
}
$ схема = $ url [‘схема’];
$ host = $ url [‘host’];
$ requesturi = $ url [‘path’];
$ hash = md5 ($ схема. ‘GET’. $ хост. $ requesturi);
var_dump (unlink ($ cache_path. substr ($ hash, -1). ‘/’. substr ($ hash, -3,2). ‘/’. $ hash));
?>

Теперь вам нужно отправить POST-запрос к этому файлу вместе с URL для очистки.

curl -d ‘url = http: //www.yourwesitename.com/test.php’ http://yourwebsitename.com/purge.php

Теперь вы увидите вывод скрипта как True или False, указывающий, был ли очищен кэш или нет. Вам придется ограничить доступ и исключить этот скрипт из кэша.

Проверьте лучшие 3 услуги VPS:

А2 Хостинг

Стартовая цена:
$ 5,00


надежность
9,3


ценообразование
9,0


Дружественный интерфейс
9,3


Служба поддержки
9,3


особенности
9,3

Читать отзывы

Посетите A2 Хостинг

ScalaHosting

Стартовая цена:
$ 12,00


надежность
9,4


ценообразование
9,5


Дружественный интерфейс
9,5


Служба поддержки
9,5


особенности
9,4

Читать отзывы

Посетите ScalaHosting

Hostinger

Стартовая цена:
$ 3,95


надежность
9,3


ценообразование
9,3


Дружественный интерфейс
9,4


Служба поддержки
9,4


особенности
9,2

Читать отзывы

Посетить Hostinger

Связанные статьи с практическими рекомендациями

  • Как установить стек LEMP (Linux, Nginx, MySQL, PHP) на Vbu или выделенный сервер Ubuntu 18.04
    промежуточный
  • Как настроить Nginx и Apache вместе на одном Ubuntu VPS или выделенном сервере
    промежуточный
  • Как настроить Давайте зашифруем с помощью Nginx на Ubuntu 18.04 VPS или выделенном сервере
    промежуточный
  • Как укрепить веб-сервер Nginx на виртуальном или выделенном сервере CentOS 7
    эксперт
  • Как установить WordPress с Nginx & Redis
    новичок
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me