В этом руководстве вы узнаете, как настроить кэш Nginx FastCGI на Ubuntu 22.04 Jammy Jellyfish или Ubuntu 20.04 Focal Fossa LTS. Кэш FastCGI является неотъемлемым компонентом при оптимизации производительности вашего веб-сервера. Nginx, известный своей эффективностью и масштабируемостью, может быть дополнительно усилен путем настройки кэша FastCGI. Этот кэш минимизирует потребление ресурсов, временно сохраняя вывод PHP-скриптов, что позволяет веб-серверу не генерировать одно и то же содержимое для каждого запроса. Это сродни созданию моментального снимка ваших веб-страниц и их быстрому обслуживанию.
Почему стоит включить кэш FastCGI
Вот почему кэш FastCGI является решающим фактором для системных администраторов:
- Снижение нагрузки на сервер: Он значительно снижает нагрузку на ваш сервер, обслуживая кэшированное содержимое вместо обработки PHP-скриптов при каждом посещении.
- Уменьшение времени отклика: Благодаря тому, что данные обслуживаются из кэша, пользователи быстрее загружают страницы, что очень важно как для удобства пользователей, так и для SEO.
- Масштабируемость: Это делает ваш сервер более устойчивым при интенсивном трафике, так как снижается потребность в вычислительных ресурсах.
- Контроль: Администратор имеет полный контроль над тем, что и как долго кэшируется, что позволяет применять индивидуальный подход в зависимости от потребностей сайта.
Однако важно разумно настраивать кэш FastCGI, так как неправильные настройки могут привести к тому, что на сайт будет отправляться устаревшее содержимое или будет расходоваться слишком много дискового пространства. Настройка параметров кэша в соответствии со структурой трафика и характером вашего веб-контента очень важна. Внимание к истечению срока действия кэша и установка соответствующих механизмов очистки помогает поддерживать свежесть содержимого.
Для тех, кто использует динамические веб-сайты или веб-приложения на сервере Ubuntu, интеграция кэша FastCGI с Nginx является отличным решением. Это не только способствует оптимизации производительности сервера, но и обеспечивает быстрый доступ к веб-сайтам для конечных пользователей. Следуя шагам этого руководства, вы сможете эффективно использовать возможности кэша Nginx FastCGI в среде вашего веб-сервера. Давайте погрузимся в практические аспекты его установки и настройки в ваших интересах.
Настройка конфигурации Nginx FastCGI для Nginx
Шаг 1: Редактирование файла конфигурации Nginx
Откройте файл конфигурации
Сначала вам нужно открыть файл nginx.conf. Мы будем использовать текстовый редактор nano, но вы можете использовать любой удобный для вас текстовый редактор. Введите эту команду:
1 | sudo nano /etc/nginx/nginx.conf |
Настройка параметров FastCGI
Внутри файла найдите блок HTTP и добавьте следующие строки:
1 2 | fastcgi_cache_path /var/nginx/fastcgi_cache levels=1:2 keys_zone=fcgicache:150m max_size=20g inactive=60m use_temp_path=off; fastcgi_cache_key "$scheme$request_method$host$request_uri"; |
После ввода строк нажмите 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. Откройте его с помощью следующей команды:
1 | sudo nano /etc/nginx/sites-available/example.com.conf |
Вставка директив кэширования FastCGI
Предполагая, что у вас установлен LEMP, вставьте следующие строки в блок расположения файлов PHP:
1 2 3 4 5 6 | fastcgi_cache fcgicache; fastcgi_cache_valid 200 60m; fastcgi_cache_use_stale error timeout update invalid_header http_500 http_503; fastcgi_cache_min_uses 1; fastcgi_cache_lock on; add_header X-FastCGI-Cache $upstream_cache_status; |
Понимание директив кэша 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
Настройка очистки кэша
Очистка кэша позволяет удалять содержимое из кэша до истечения срока его действия. Чтобы настроить очистку кэша, создайте директиву очистки кэша, вставив следующие строки в файл блока вашего сервера:
1 2 3 4 5 6 | location ~ /purge(/.*) { # Откомментируйте следующие две строки, чтобы разрешить очистку только с веб-сервера allow 127.0.0.1; deny all; fastcgi_cache_purge fcgicache "$scheme$request_method$host$1"; } |
Нажмите CTRL + O, введите Y, а затем нажмите CTRL + X, чтобы выйти из текстового редактора.
Альтернативный подход для решения проблем с очисткой кэша
Если у вас возникли проблемы с очисткой кэша, вы можете настроить время истечения срока действия кэша. Для сайтов со средней и высокой посещаемостью часто более эффективным является установка более низкого срока действия, например, 2 часа для неактивного и 4 часа для общего срока действия.
Шаг 4: Тестирование и перезапуск сервера Nginx
Проверка конфигурации
Важно проверить конфигурацию Nginx, чтобы избежать синтаксических ошибок или неправильной настройки. Используйте следующую команду:
1 | sudo nginx -t |
Если все правильно, вы должны увидеть следующий результат:
1 2 | nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
Перезапустите сервер Nginx
Наконец, перезапустите сервер Nginx, чтобы применить сделанные изменения:
1 | sudo systemctl restart nginx |
Создание и оптимизация каталога кэша FastCGI
Шаг 1: Создание каталога кэша FastCGI
Теперь создадим каталог, в котором Nginx будет хранить файлы кэша. Этот путь был указан ранее в файле nginx.conf:
1 | sudo mkdir -p /var/nginx/fastcgi_cache |
Шаг 2: Оптимизация каталога кэша с помощью tmpfs (необязательно)
Если ваша система имеет достаточно оперативной памяти, вы можете использовать tmpfs для хранения кэша в памяти. Это может привести к более быстрому доступу по сравнению с хранением на диске. Однако будьте осторожны, так как хранение в оперативной памяти может потреблять значительные ресурсы памяти. Вот как можно смонтировать каталог кэша как tmpfs:
Отредактируйте файл /etc/fstab:
1 | sudo nano /etc/fstab |
Добавьте следующую строку в конец файла:
1 | tmpfs /var/nginx/fastcgi_cache tmpfs defaults,size=512M 0 0 |
Это выделит 512MB вашей оперативной памяти для кэша. Вы можете изменить размер в зависимости от ресурсов вашей системы.
Смонтируйте tmpfs:
1 | sudo mount -a |
Эта конфигурация обеспечивает хранение кэша FastCGI в памяти, обеспечивая более высокую производительность за счет использования оперативной памяти.
Проверка работоспособности кэша FastCGI
Шаг 1: Протестируйте FastCGI Cache с помощью команды curl
Вы можете проверить правильность работы FastCGI Cache с помощью команды curl. В зависимости от настроек кэша, вам может потребоваться выполнить команду несколько раз, прежде чем вы увидите попадание в кэш:
1 | curl -I http://www.your-domain.com |
Если у вас не установлен curl, вы можете установить его с помощью:
1 | sudo apt install curl -y |
В выводе ищите заголовок X-FastCGI-Cache: HIT:
1 2 3 4 5 | ~$ curl -I https://www.example.com/ HTTP/1.1 200 OK ... <strong>X-FastCGI-Cache: HIT</strong> ... |
Это указывает на то, что запрос был обработан из кэша.
Шаг 2: Настройте исключения из кэша
Некоторые элементы сайта не должны кэшироваться, например, страницы администратора WordPress, разделы комментариев и карты сайта. Чтобы настроить Nginx не кэшировать их, добавьте следующий код над строкой location (~\.php$) в файле блока вашего сервера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # Кэшировать по умолчанию set $skip_cache 0; # Не кэшировать URI, содержащие следующее if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-..php|^/feed/|/tag/./feed/|index.php|/.sitemap...(xml|xsl)") { 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; } # POST-запросы и URI со строкой запроса должны обходить кэш if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } |
Отладка исключений кэша (необязательно)
Если вы хотите добавить примечания для целей отладки, вы можете включить пользовательское примечание под каждым оператором set $skip_cache 1; следующим образом:
1 | set $skip_reason "ваше пользовательское примечание"; |
Это может быть полезно для понимания того, почему определенное содержимое не кэшируется во время устранения неполадок.
После выполнения этих настроек обязательно протестируйте конфигурацию и перезапустите Nginx:
1 2 | sudo nginx -t sudo systemctl restart nginx |
Лучшие практики и соображения
Хотя кэширование FastCGI может обеспечить значительные преимущества в производительности, важно убедиться, что конфигурация оптимизирована для вашего конкретного случая использования и ресурсов сервера:
- Оцените объем доступной оперативной памяти, прежде чем выбрать tmpfs для кэширования. Убедитесь, что на вашем сервере достаточно памяти для других важных процессов.
- Настройте исключения из кэша в соответствии с вашим приложением. Приведенные примеры предназначены для WordPress, но для других типов приложений могут потребоваться другие исключения.
- Регулярно контролируйте использование и производительность кэша. Если кэш занимает слишком много места на диске или не улучшает производительность, как ожидалось, измените путь, размер или настройки кэша.
Заключение
В этом руководстве мы методично рассмотрели процесс настройки Nginx FastCGI Cache на Ubuntu 22.04-20.04. Мы начали с объяснения важности кэширования и того, как оно повышает производительность вашего сайта. В ходе выполнения шагов вы узнали, как настроить кэш Nginx FastCGI, отредактировать блок сервера Nginx, создать папки кэша и обеспечить правильное функционирование кэша. Мы также обсудили важность исключения из кэша определенного содержимого, например, комментариев пользователей и страниц администраторов.
В качестве последней рекомендации, очень важно регулярно контролировать кэш FastCGI для обеспечения оптимальной производительности. Оценивайте доступные ресурсы сервера, особенно при использовании tmpfs, и подбирайте настройки кэша в соответствии с требованиями вашего приложения. Применяя эти лучшие практики, вы будете на пути к обеспечению быстрого и эффективного веб-сервиса.