Nginx оптимизация и использование
Домашняя станица nginx с русскоязычной документацией. nginx (engine x; по-русски произносится как энджин-экс) можно использовать как HTTP -сервер, почтовый прокси-сервер и HTTP accelerator (reverse proxy). Применение nginx целесообразно прежде всего для статических веб-сайтов и как прокси-сервера перед динамическими сайтами. Nginx, как и Lighttpd, часто используют для отдачи статического содержимого, генерируемого «тяжёлым» веб-приложением, работающим под управлением другого веб-сервера. Архитектурно Nginx — это асинхронный сервер, который использует один главный процесс для приема соединений и несколько рабочих процессов для их обработки.
Читайте также:
- Установка связки: Связка Nginx Apache mod_remoteip или mod_rpaf, Nginx Apache DokuWiki.
Команды NGINX:
- nginx -t Проверяет конфигурацию NGINX.
- nginx -T Проверяет конфигурацию NGINX и выводит ее проверенной на экран. Эта команда полезна при поиске поддержки.
- nginx -s signal Флаг -s отправляет сигнал главному процессу NGINX. Вы можете отправлять такие сигналы, как stop, quit, reload и reopen. stop немедленно прекращает процесс NGINX, quit останавливает процесс NGINX после завершения обработки запросов в полете, reload перезагружает конфигурацию, reopen дает NGINX команду повторно открывать файлы журнала. Используйте метод reload для аккуратной перезагрузки конфигурации без остановки сервера (изменяет конфигурацию на лету, не отбрасывая никаких пакетов):
$ nginx -s reload
- nginx -h Показывает справочное меню NGINX.
- nginx -v Показывает версию NGINX.
- nginx -V Показывает версию NGINX, информацию о сборке и аргументы конфигурации, где даны модули, встроенные в двоичный файл NGINX.
Что такое default_server в Nginx
Для того чтобы Nginx обрабатывал клиентский запросы с неизвестным доменом или пустым полем "Host" заголовка запроса. В каких случаях это может произойти, например когда
- пользователь пытается перейти по IP-адрес сервера в браузер
- или у вас много доменов, таких как dieg.info, wiki.dieg.info, to.dieg.info и не все из них прописаны в файле конфигурации Nginx.
- Или в DNS ваш домен указан со звездочкой, то есть Wilcard
В блоке сервера (server), в директиву listen добавляется флаг default_server, Nginx объявляет этот сервер сервером по умолчанию. После этого Nginx будет использовать сервер по умолчанию для обработки запросов, когда их заголовок HTTP-хоста не будет соответствовать каким-либо другим блокам сервера. Флаг default_server может быть добавлен только один раз в блок сервера с любой комбинацией IP:порт, указанной в качестве параметра директивы listen. Однако флаг default_server можно использовать несколько раз для разных комбинаций IP:порт.
server { listen 80 default_server; #... }
Если запросы без поля "Host" в заголовке не должны обрабатываться, можно определить сервер, который будет их отклонять:
server { listen 80; server_name ""; return 444; }
Здесь в качестве имени сервера указана пустая строка, которая соответствует запросам без поля “Host” в заголовке, и возвращается специальный для nginx код 444, который закрывает соединение.
Модули и директивы
Проверить какие модули подгружает Nginx:
2>&1 nginx -V | tr -- - '\n' | grep _module
Директивы:
- proxy_max_temp_file_size задаёт максимальный размер временного файла для проксированного ответа. "proxy_max_temp_file_size 0" запрещает создание файла.
- client_body_buffer_size, например можно задать 128k;
- Модуль nginx ngx_http_limit_conn_module служит для ограничения количества соединений, устанавливаемых одним ip.
- Модуль nignx ngx_http_limit_req_module служит для ограничения количества одиночных ip-запросов (частота запросов). Настройка Nginx ограничение скорости rate limit использование директив limit_req_zone и limit_req.
- Модуль ngx_http_stub_status_module предоставляет доступ к базовой информации о состоянии сервера. Смотрите пример включения статистики.
Модули:
- ngx_http_ssi_module - модуль поддержки языка SSI.
- Настройка Кэш (cache) в Nginx позволяет передавать запросы другому серверу и настройка кеширования.
- 2 способа установки модуль testcookie для борьбы с DDoS в Nginx - требует компиляции.
- Установка модуля GeoIP2 Nginx с новым форматом базы MaxMind - требует компиляции или подключения в виде динамического модуля.
Настройки размера буфера в Nginx и поиск медленных запросов
- Устанавливает размер буфера для чтения тела запроса клиента, если размер тела запроса выше чем указанный параметр, то часть тела или тело целиком записывается во временный файл. Не рекомендуется ставить высокие значения, так как средний размер тела запроса не превышает несколько сотен байт: client_body_buffer_size 24k;
- Определяет максимальный размер тела запроса клиента: client_max_body_size 6m;
- Устанавливает размер буфера для чтения заголовков запроса клиента. Для большинства запросов буфера в 1 Кб достаточно, однако запросы с длинными cookies могут не укладываться в данный размер: client_header_buffer_size 1k;
Параметры php-fpm:
- emergency_restart_threshold 5 Параметр, сообщающий о том, что если больше 5 дочерних процессов с сигналом ошибки или отказк, то FPM-мастер (главный процесс) перезагружается
- emergency_restart_interval 2m Параметр, определяющий, в течение какого времени должны умереть 5 процессов, чтобы мастер-процесс выполнил грейсфул рестарт самого себя
- process_control_timeout 10s Параметр, который говорит, сколько времени можно подождать перед реакцией на сигнал от мастер-процесса, эти 10 секунд дополнительные позволят процессу завершить все задачи с большим шансом перед тем, как он умрет
Стандартные параметры PM (process manager-а) pm = dynamic. Данные параметр указывает, что кол-во pm-процессов будет динамически создаваться в зависимости от настроек, представленных ниже.
pm.max_children = 5 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = 4 pm.max_requests = 200
Для поиска медленных запросов следует использовать параметр для php-fpm конфига:
slowlog /path/to/php-fpm-slow.log
Читайте также
- nginx: пакеты для Linux как установить последнюю версию Nginx или здесь Prebuilt Packages for Linux and BSD
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах