Советы по настройке и оптимизации Nginx и PHP-FPM
От переводчика: Речь пойдет о тонкостях настройки связки Nginx + PHP-FPM в виде небольшого сборника советов. Перевод вольный. Ориентированно на пользователей Linux.
Советы по настройке и оптимизации Nginx
Совет №1 — Организация файлов конфигурации NginxОбычно файлы конфигурации Nginx хранятся в /etc/nginx .
Один из удобных способов организации файлов конфигурации в стиле Debian/Ubuntu Apache:
Файлы виртуальных хостов разделены на две директории. Директория sites-available может содержать любые файлы: тестовые, старые конфиги, копии конфигов и прочие. А директория sites-enabled содержит только реально работающие конфигурации, в действительности являющиеся только символическими ссылками на файлы в директории sites-available .
Не забудьте добавить следующие строки в файл nginx.conf :
Совет №2 — Определить Nginx worker_processes и worker_connectionsНастройки по умолчанию хороши, но их стоит немного оптимизировать: max_clients = worker_processes * worker_connections .
Базовые настройки Nginx могут обрабатывать сотни одновременных соединений:
Обычно 1000 одновременных соединений на один сервер это хорошо, но порою другие части, например жесткий диск могут оказаться медленными и это приведет к тому, что Nginx будет заблокирован на операции ввода-вывода (I/O). Чтобы избежать блокировки используйте, например, следующие настройки: одни worker_process на ядро процессора :
Worker ProcessesЧтобы определить сколько ядер имеет ваш процессор, введите:
В данном случае у меня четыре ядра, поэтому окончательный парамерт worker_processes устанавливаем как 4:
Worker ConnectionsЛично я придерживаюсь 1024 соединений на один воркер, потому что у меня нет никаких оснований для повышения этого значения. Но если например 4096 соединений в секунду не хватает, то можно попробовать удвоить 2048 соединений на процесс.
Окончательные настройки выглядят седующим образом:
Совет №3 — Скрыть токены Nginx / Скрыть номер версии NginxЭто хорошо из соображений безопасности — скрыть токены Nginx и скрыть номер версии Nginx, тем более если вы используете устаревшую версию Nginx. Это очень легко сделать — достаточно добавить в секцию http/server/location файла конфигурации следующую строку:
Совет №4 — Ограничение на размер передаваемых данных сервером NginxЕсли вы хотите разрешить пользователям загружать файлы, то вы должны увеличить размер сообщения. Это может быть сделано с помощью значения client_max_body_size , которое находится в секции http/server/location файла конфигурации. По умолчанию он равен 1 Мб, но его можно увеличить, например, до 20 Мб, а также увеличить размер буфера:
Если вы получаете сообщение об ошибке, то вы знаете, что client_max_body_size слишком мало:
Совет №5 — Управление кешем для статических файловКэш браузера сохранит ресурсы и пропускную способность вашего сервера. Это несложная настройка Nginx позволит выключить ведение логов ( access log и not found log ), и установить срок истечения заголовка в 360 дней.
* \ . ( jpg | jpeg | gif | png | css | js | ico | xml ) $