Как настроить кэш Nginx FastCGI в Ubuntu 22.04

В этом руководстве вы узнаете, как настроить кэш Nginx FastCGI на Ubuntu 22.04 Jammy Jellyfish или Ubuntu 20.04 Focal Fossa LTS. Кэш FastCGI является неотъемлемым компонентом при оптимизации производительности вашего веб-сервера. Nginx, известный своей эффективностью и масштабируемостью, может быть дополнительно усилен путем настройки кэша FastCGI. Этот кэш минимизирует потребление ресурсов, временно сохраняя вывод PHP-скриптов, что позволяет веб-серверу не генерировать одно и то же содержимое для каждого запроса. Это сродни созданию моментального снимка ваших веб-страниц и их быстрому обслуживанию.

Table of Contents

Nginx

Почему стоит включить кэш FastCGI

Вот почему кэш FastCGI является решающим фактором для системных администраторов:

  • Снижение нагрузки на сервер: Он значительно снижает нагрузку на ваш сервер, обслуживая кэшированное содержимое вместо обработки PHP-скриптов при каждом посещении.
  • Уменьшение времени отклика: Благодаря тому, что данные обслуживаются из кэша, пользователи быстрее загружают страницы, что очень важно как для удобства пользователей, так и для SEO.
  • Масштабируемость: Это делает ваш сервер более устойчивым при интенсивном трафике, так как снижается потребность в вычислительных ресурсах.
  • Контроль: Администратор имеет полный контроль над тем, что и как долго кэшируется, что позволяет применять индивидуальный подход в зависимости от потребностей сайта.

Однако важно разумно настраивать кэш FastCGI, так как неправильные настройки могут привести к тому, что на сайт будет отправляться устаревшее содержимое или будет расходоваться слишком много дискового пространства. Настройка параметров кэша в соответствии со структурой трафика и характером вашего веб-контента очень важна. Внимание к истечению срока действия кэша и установка соответствующих механизмов очистки помогает поддерживать свежесть содержимого.

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

Настройка конфигурации Nginx FastCGI для Nginx

Шаг 1: Редактирование файла конфигурации Nginx

Откройте файл конфигурации

Сначала вам нужно открыть файл nginx.conf. Мы будем использовать текстовый редактор nano, но вы можете использовать любой удобный для вас текстовый редактор. Введите эту команду:

Настройка параметров FastCGI

Внутри файла найдите блок HTTP и добавьте следующие строки:

После ввода строк нажмите CTRL + O, введите Y, а затем нажмите CTRL + X для выхода.

Понимание параметров FastCGI

  • fastcgi_cache_path: Этот параметр задает место хранения кэша FastCGI (/var/nginx/fastcgi_cache). Он очень важен, поскольку определяет, где будет храниться кэшированное содержимое.
  • levels=1:2: Это создает двухуровневую иерархию каталогов под местом расположения кэша. Такая конструкция помогает распределить файлы по двум каталогам, что, в свою очередь, снижает риск возникновения узких мест дискового ввода-вывода.
  • keys_zone: Указывает имя зоны разделяемой памяти (fcgicache) и ее размер (150M). Зона разделяемой памяти очень важна для хранения ключей кэша и метаданных.
  • max_size: Определяет максимальный размер кэша (в данном примере 20 ГБ). Когда этот предел будет достигнут, самые старые файлы будут удалены, чтобы освободить место для новых.
  • inactive (неактивный): Определяет время, по истечении которого данные, к которым не было доступа, будут удалены из кэша. В данном примере установлено значение 60 минут.
  • use_temp_path: Установка этого параметра в значение off указывает Nginx записывать файлы непосредственно в указанную папку кэша, минуя использование временной области хранения.
  • fastcgi_cache_key: Используется для определения ключа для поиска кэша. Nginx создает MD5-хэш этого ключа для использования в качестве имени файлов кэша.

Шаг 2: Настройка серверного блока Nginx

Редактирование файла серверного блока

Далее необходимо отредактировать файл блока сервера. В данном примере мы будем считать, что файл называется example.com.conf. Откройте его с помощью следующей команды:

Вставка директив кэширования FastCGI

Предполагая, что у вас установлен LEMP, вставьте следующие строки в блок расположения файлов PHP:

Понимание директив кэша FastCGI

  • fastcgi_cache: Включает кэширование и указывает зону разделяемой памяти, которая была определена ранее.
  • fastcgi_cache_valid: Определяет продолжительность кэширования для определенных кодов состояния HTTP.
  • fastcgi_cache_use_stale: Задает условия, при которых Nginx может использовать несвежий кэшированный ответ.
  • fastcgi_cache_min_uses: Определяет, сколько раз должен быть запрошен ответ, прежде чем он попадет в кэш.
  • fastcgi_cache_lock: Гарантирует, что только один запрос за один раз заполняет новый элемент кэша, предотвращая 'cache stampede'.
  • add_header: Добавляет пользовательский заголовок (X-FastCGI-Cache) к HTTP-ответу, указывая, был ли ответ получен из кэша или нет.

Шаг 3: Настройка очистки кэша FastCGI

Настройка очистки кэша

Очистка кэша позволяет удалять содержимое из кэша до истечения срока его действия. Чтобы настроить очистку кэша, создайте директиву очистки кэша, вставив следующие строки в файл блока вашего сервера:

Нажмите CTRL + O, введите Y, а затем нажмите CTRL + X, чтобы выйти из текстового редактора.

Альтернативный подход для решения проблем с очисткой кэша

Если у вас возникли проблемы с очисткой кэша, вы можете настроить время истечения срока действия кэша. Для сайтов со средней и высокой посещаемостью часто более эффективным является установка более низкого срока действия, например, 2 часа для неактивного и 4 часа для общего срока действия.

Шаг 4: Тестирование и перезапуск сервера Nginx

Проверка конфигурации

Важно проверить конфигурацию Nginx, чтобы избежать синтаксических ошибок или неправильной настройки. Используйте следующую команду:

Если все правильно, вы должны увидеть следующий результат:

Перезапустите сервер Nginx

Наконец, перезапустите сервер Nginx, чтобы применить сделанные изменения:

Создание и оптимизация каталога кэша FastCGI

Шаг 1: Создание каталога кэша FastCGI

Теперь создадим каталог, в котором Nginx будет хранить файлы кэша. Этот путь был указан ранее в файле nginx.conf:

Шаг 2: Оптимизация каталога кэша с помощью tmpfs (необязательно)

Если ваша система имеет достаточно оперативной памяти, вы можете использовать tmpfs для хранения кэша в памяти. Это может привести к более быстрому доступу по сравнению с хранением на диске. Однако будьте осторожны, так как хранение в оперативной памяти может потреблять значительные ресурсы памяти. Вот как можно смонтировать каталог кэша как tmpfs:

Отредактируйте файл /etc/fstab:

Добавьте следующую строку в конец файла:

Это выделит 512MB вашей оперативной памяти для кэша. Вы можете изменить размер в зависимости от ресурсов вашей системы.

Смонтируйте tmpfs:

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

Проверка работоспособности кэша FastCGI

Шаг 1: Протестируйте FastCGI Cache с помощью команды curl

Вы можете проверить правильность работы FastCGI Cache с помощью команды curl. В зависимости от настроек кэша, вам может потребоваться выполнить команду несколько раз, прежде чем вы увидите попадание в кэш:

Если у вас не установлен curl, вы можете установить его с помощью:

В выводе ищите заголовок X-FastCGI-Cache: HIT:

Это указывает на то, что запрос был обработан из кэша.

Шаг 2: Настройте исключения из кэша

Некоторые элементы сайта не должны кэшироваться, например, страницы администратора WordPress, разделы комментариев и карты сайта. Чтобы настроить Nginx не кэшировать их, добавьте следующий код над строкой location (~\.php$) в файле блока вашего сервера:

Отладка исключений кэша (необязательно)

Если вы хотите добавить примечания для целей отладки, вы можете включить пользовательское примечание под каждым оператором set $skip_cache 1; следующим образом:

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

После выполнения этих настроек обязательно протестируйте конфигурацию и перезапустите Nginx:

Лучшие практики и соображения

Хотя кэширование FastCGI может обеспечить значительные преимущества в производительности, важно убедиться, что конфигурация оптимизирована для вашего конкретного случая использования и ресурсов сервера:

  • Оцените объем доступной оперативной памяти, прежде чем выбрать tmpfs для кэширования. Убедитесь, что на вашем сервере достаточно памяти для других важных процессов.
  • Настройте исключения из кэша в соответствии с вашим приложением. Приведенные примеры предназначены для WordPress, но для других типов приложений могут потребоваться другие исключения.
  • Регулярно контролируйте использование и производительность кэша. Если кэш занимает слишком много места на диске или не улучшает производительность, как ожидалось, измените путь, размер или настройки кэша.

Заключение

В этом руководстве мы методично рассмотрели процесс настройки Nginx FastCGI Cache на Ubuntu 22.04-20.04. Мы начали с объяснения важности кэширования и того, как оно повышает производительность вашего сайта. В ходе выполнения шагов вы узнали, как настроить кэш Nginx FastCGI, отредактировать блок сервера Nginx, создать папки кэша и обеспечить правильное функционирование кэша. Мы также обсудили важность исключения из кэша определенного содержимого, например, комментариев пользователей и страниц администраторов.

В качестве последней рекомендации, очень важно регулярно контролировать кэш FastCGI для обеспечения оптимальной производительности. Оценивайте доступные ресурсы сервера, особенно при использовании tmpfs, и подбирайте настройки кэша в соответствии с требованиями вашего приложения. Применяя эти лучшие практики, вы будете на пути к обеспечению быстрого и эффективного веб-сервиса.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий