Как отключить timeout в Nginx

Мы расскажем вам о тайм-аутах NGINX, а также о как их установить NGINX и отключения в Ubuntu.

Что такое NGINX?

NGINX (произносится как «Engine X») – это мощный HTTP веб-сервер с открытым исходным кодом, который также выполняет функции обратного прокси-сервера и прокси-сервера IMAP/POP3.

Его популярность обусловлена такими характеристиками, как высокая производительность, простота настройки, стабильность, гибкость и минимальное потребление ресурсов. При использовании в качестве обратного прокси-сервера и размещении между несколькими серверами он выполняет функции балансировщика нагрузки.

NGINX использует асинхронную архитектуру, управляемую событиями, вместо потоков для обработки запросов. Предлагается даже коммерческая версия, известная как «NGINX Plus». На ней работают многие популярные сайты, включая Pinterest, Netflix, Heroku, Airbnb и многие другие.

Что такое таймауты NGINX?

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

Таймауты обычно задаются в секундах, однако можно использовать и другие единицы времени в NGINX, например ms (миллисекунды), s (секунды), m (минуты) и т.д.

Различные типы тайм-аутов NGINX

Рассмотрим некоторые распространенные типы timeout, которые можно настроить.

  • Client Body Timeout – это время чтения тела запроса клиента, которое может быть задано с помощью синтаксиса client_body_timeout <time_unit>;. По умолчанию это время составляет 60 секунд.
  • Client Header Timeout – это время чтения заголовка запроса клиента, которое может быть задано с помощью синтаксиса client_header_timeout <time_unit>;. По умолчанию оно составляет 60 секунд.
  • Keepalive Timeout – время, в течение которого соединение может оставаться открытым/активным, если не поступает новых запросов. По умолчанию время таймаута keepalive составляет 75 секунд, которое может быть установлено с помощью синтаксиса keepalive_timeout <time_unit>;.
  • Send Timeout – Определяет время, в течение которого NGINX будет ожидать отправки клиентом полного заголовка запроса. По умолчанию это время составляет 60 секунд, которое можно задать с помощью синтаксиса send_timeout <time_unit>;.
  • Proxy Read Timeout – Это максимальное время, в течение которого NGINX будет ожидать ответа от внутреннего сервера при работе в качестве обратного прокси. Он может быть настроен с помощью синтаксиса proxy_read_timeout <time_unit>;.
  • Proxy Connect Timeout – это максимальное время, в течение которого NGINX будет ожидать установления соединения с внутренним сервером. Устанавливается с помощью синтаксиса proxy_connect_timeout <time_unit>;.

Почему мы отключаем таймауты NGINX?

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

Однако есть некоторые исключительные случаи, такие как тестирование или специализированные случаи использования, когда временное отключение таймаутов полезно для увеличения времени соединения или обработки.

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

Перед отключением таймаута в NGINX необходимо знать, как установить NGINX. Если вы уже знаете об этом или у вас уже установлен Nginx, то эту часть можно пропустить.

Установка NGINX в Ubuntu

Для установки NGINX в Ubuntu откройте терминал и выполните команду apt, чтобы кэш локального репозитория вашей системы обновился.

sudo apt update

После обновления системы выполните указанную ниже команду для установки NGINX из официального репозитория Ubuntu.

sudo apt install nginx -y

После установки NGINX в систему вы можете запустить, включить и проверить состояние его службы с помощью команд systemctl.

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Как отключить NGINX Timeout?

Чтобы отключить NGINX Timeouts, вы можете либо изменить конфигурационный файл NGINX, либо создать для него новый файл. В этом блоге мы изменим конфигурационный файл, открыв его с помощью редактора nano.

sudo nano /etc/nginx/nginx.conf

Примечание: Отключение таймаутов в конфигурационном файле NGINX не рекомендуется в производственной среде.

В конфигурации отключите нужный таймаут, установив его в 0. Здесь мы отключим Proxy Read Timeout, добавив в файл nginx.conf строку, приведенную ниже.

proxy_read_timeout 0;

Сохраните и выйдите из конфигурационного файла NGINX.

После внесения изменений в файл перезапустим службу сервера NGINX.

sudo nginx -s reload

Мы успешно отключили один таймаут. Однако мы можем отключить несколько таймаутов, установив их значения в 0 в файле nginx.conf.

http {
    # ... other configurations ...
    client_body_timeout 0;
    client_header_timeout 0;
    keepalive_timeout 0;
    send_timeout 0;
    proxy_read_timeout 0;
    proxy_connect_timeout 0;
    # ... other configurations ...
}

После внесения изменений перезагрузите конфигурацию NGINX, чтобы применить изменения.

sudo service nginx reload

Вывод

Таймауты в NGINX – это время, по истечении которого указанный процесс будет завершен. Установка значений этих таймаутов необходима для того, чтобы любой запрос не задерживал ресурсы на неопределенное время.

Однако в некоторых сценариях, например при тестировании, может возникнуть необходимость временно отключить тайм-ауты. В данном руководстве рассмотрена процедура установки NGINX и отключения его тайм-аутов.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.ubuntumint.com

Похожие статьи

Комментарии (0)