0

nginx

NGINX КОНФИГУРАЦИОННЫЙ ФАЙЛ ДЛЯ РАБОТЫ ПРИ ВЫСОКИХ НАГРУЗКАХ

19.07.2022

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




Можно использовать конфигурацию по умолчанию и дефолтные виртуальные хосты (которые копируются, переименовываются и в которых заменяют имя сайта и каталог, к которому следует обращаться). Для Nginx конфигурационный файл /etc/nginx/nginx.conf является основным, в нем подключаются все остальные. Путем добавления нужных директив и подбора их значений выполняется тонкая настройка .

Для нагруженных проектов усилия на это затраченные оправдывают себя.

Будем рассматривать тонкую настройку веб-севрера Nginx, работающего на сервере под управлением операционной системы Debian.

Nginx конфигурационный файл

Основной конфигурационный файл имеет следующую структуру:

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
worker_connections 768;
# multi_accept on;
}

http {

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

}

Для приведенного файла запускается веб-сервер от имени пользователя www-data. Максимальное количество возможных соединений определяется произведением значений worker_processes и worker_connections — каждый воркер может обрабатывать количество соединений, заданное в соответствующей директиве конфига (в примере значение worker_connections равно 768, и задано 4 воркера).

Стандартное для веб-серверов правило — устанавливать количество воркеров в соответствии с количеством ядер процессора для nginx не критично, также значение worker_processes можно устанавливать в auto, но эта настройка актуальна не для всех версий Nginx.

Следующая директива важна для снятия ограничений количества возможных соединений — она находится в блоке events и по-умолчанию закомментирована, чтобы активировать директиву достаточно снять знак комментария и перезапустить Nginx

multi_accept on;

Директивы, задающиеся в разделе конфигурационного файла http

Метод отправки информации

sendfile on;

Указание на необходимость отправки заголовков вместе с данными, что позволит ускорить процесс обработки запросов

tcp_nodelay on;

tcp_nopush on;

Самым важным для быстродействия является включение сжатия — производится обычно также в разделе http

gzip on;

gzip_disable «msie6»;

gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json application/javascript;

Большой эффект дает сжатие css и javascript

При активных директивах будет использоваться GZIP сжатие, что покажет GooglePageSpeedInsights

Логирование подключается директивами в секции http, но может также задаваться и в файлах виртуальных хостов

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

Полностью конфигурационный файл может выглядеть так:

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
worker_connections 768;
# multi_accept on;
}

http {

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

server_names_hash_bucket_size 64;

include /etc/nginx/mime.types;
default_type application/octet-stream;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

gzip on;
gzip_disable «msie6»;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

}

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

nginx -t

Если ошибок в консоль не вывелось — веб-сервер можно перезапускать

service nginx restart

Nginx хорош тем, что универсален. Он легко масштабируется и может проксировать запросы на несколько бэкендов отслеживая их доступность. Nginx применяется для почтовых серверов и является универсальным фронтэндом, что позволяет использовать его в распределенных отказоустойчивых системах.

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

1 Nginx 2.1K views

Web сервер Nginx PHP 8.0 Php-fpm Centos 8

Конфиг репозитория /etc/yum.repos.d/nginx.repo Устанавливаем nginx на сервер. Открыть порты 80 и 443 на firewalld, который используется в centos 8 по-умолчанию. Проверить, открылись ли

Обратный SSL-прокси к 1С

Большое значение имеет шифрование при обмене информацией через интернет, особенно таких чувствительных данных, как логин и пароль. Если для работы применяется веб-публикация
apache
Previous Story

ОПТИМИЗАЦИЯ APACHE

excel to mysql
Next Story

Загрузка данных из Excel в MySQL с помощью PHP

Latest from Blog

Настройка и использование Redis

В этой статье мы расскажем что такое Redis, его преимущества и для каких целей он используется. Redis (REmote DIctionary Server) — сетевое журналируемое хранилище данных типа “ключ” — “значение” с открытым исходным кодом. По сути Redis представляет собой базу данных

Настройка и использование Memcached

В статье мы расскажем, что такое Memcache, зачем он нужен и как он влияет на работу некоторых популярных CMS. Кеширование данных – немаловажный момент в работе любого веб-проекта. С ростом посещаемости увеличиваются требования к

Как настроить логирование и ротацию логов Nginx

Вовремя настроенное журналирование позволяет в дальнейшем избежать неожиданных проблем с веб-сервером. Информация, хранящаяся в логах (или журналах) сервера, помогает быстро оценить ситуацию и устранить ошибки. В этой статье мы рассмотрим возможности логирования

Распределение выполнения запросов внутри приватной сети VPS через HAProxy

Приватную сеть можно использовать для распределения выполнения загрузки и балансировки запросов между несколькими серверами. Рассмотрим организацию такой балансировки на примере HAProxy – бесплатного ПО, предназначенного для распределения нагрузки и организации проксирования TCP-пакетов между несколькими обслуживающими

Использование MySQL на отдельном сервере с приватной сетью VPS

Приватную сеть – функционал, доступный пользователям VPS – можно использовать для вынесения MySQL на отдельный сервер. В этом случае веб-сервер обрабатывает запросы от клиентов и через приватное подключение обменивается данными с базой. Это
Go toTop

Don't Miss

Обратный SSL-прокси к 1С

Большое значение имеет шифрование при обмене информацией через интернет, особенно
Nginx

Web сервер Nginx PHP 8.0 Php-fpm Centos 8

Конфиг репозитория /etc/yum.repos.d/nginx.repo Устанавливаем nginx на сервер. Открыть порты 80 и