Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
Предлагаю вашему вниманию некоторые изменения стандартного конфига Nginx, которые я лично выполняю. К каждому параметру сделаю небольшое пояснение. ▪ worker_connections 8192; Количество соединений для одного рабочего процесса. Повышать следует в зависимости от производительности сервера, но дефолтные значения я в любом случае увеличиваю. ▪ worker_rlimit_nofile 65536; Параметр указывает, сколько файловых дескрипторов будет использовать Nginx. На каждое соединение надо выделять по два дескриптора: один на соединение с клиентом, второй на открытие файла. Число соединений = worker_connections * worker_processes. ▪ pcre_jit on; Использование PCRE JIT способно существенно ускорить обработку регулярных выражений. ▪ multi_accept on; Позволяет рабочему процессу сразу принять все новые соединения. Иначе он их будет принимать по одному. ▪ sendfile on;  Параметр активирует передачу данных между файловыми дескрипторами средствами ядра ОС. Это ускоряет процесс и экономит ресурсы. ▪ tcp_nopush on; tcp_nodelay on; Параметры ускоряют передачу данных HTTP запросов. ▪ reset_timedout_connection on; Параметр разрешает сброс соединений по таймауту. ▪ server_tokens off; Отключите server_tokens, чтобы nginx не показывал свою версию. ▪ ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; Отключите старые версии ssl, а можно и tls1, tls1.1. Сейчас по умолчанию поддерживаются версии tls 1.2 и 1.3. Остальные считаются устаревшими. ▪ log_format Я обычно добавляю дополнительные поля в стандартный формат логов. Как минимум rt=$request_time и ut=$upstream_response_time. Это позволяет мониторить время ответа бэкендов. Отклонение от стандартных логов приводит к тому, что их перестают парсить стандартные шаблоны различного софта. Так что изменяйте на свой страх и риск. Я это делаю там, где потом и шаблоны редактирую сам. ▪ client_max_body_size 10m; Задаёт максимально допустимый размер тела запроса клиента. Дефолтное значение в 1m часто недостаточно. Также я в обязательном порядке меняю дефолтные таймауты, типа proxy_connect_timeout, send_timeout, client_body_timeout и т.д. Но это уже делается под конкретные сайты и ситуации, поэтому не привожу примеры этих значений. В общем случае можно оставить дефолт, а потом изменять по мере необходимости. 📌 В завершении несколько полезных ссылок на мои материалы по теме Nginx: - Подробная установка и настройка Nginx с примерами - Автоматическое тестирование конфигурации Nginx - Правильный redirect 301 для SEO в Nginx - Nginx в качестве балансировщика нагрузки - Проксирование запросов в nginx с помощью proxy_pass - Сборка rpm пакета nginx с дополнительными модулями  📌 Другие полезные ссылки: - Генерация конфигов Nginx от DigitalOcen - SSL Configuration Generator - Проверка конфигурации Nginx Пост достоин того, чтобы отправиться в закладки. #nginx