написать впереди
Nginx является отличным представителем высокопроизводительных легковесных веб-серверов.Поскольку он предоставляет ряд важных функций, таких как HTTP-прокси и обратный прокси-сервер, балансировка нагрузки, кэширование и т. д., он широко используется в современных веб-сервисах. крупные интернет-компании также активно используются, поэтому разработчику необходимо изучить использование и настройку Nginx.
В этой статье мы начнем с примера списка конфигурации, чтобы кратко разобраться в функциях и использовании различных общих директив конфигурации сервера Nginx.
Без лишних слов, давайте служить!
Эта статья находится в репозитории с открытым исходным кодом GitHub"Путь к программированию"GitHub.com/People's2coding/R…Он был записан в , и я его аранжировалМаршрут самообучения + очки знаний 6 основных направлений программирования (посты),тестовый сайт интервью,мое резюме,Несколько хардкорных заметок в формате pdf,а такжемоя программистская жизнь, добро пожаловать, чтобы оценить.
Общая структура конфигурационного файла Nginx
Это ясно с первого взгляда, прямо нарисовав здесь картинку, и можно четко увидеть несколько больших модулей конфигурации.
Из рисунка видно, что в основном он включает в себя следующие основные части:
1. Глобальный блок
Эта часть конфигурации в основном затрагивает глобальный Nginx, обычно включает в себя следующие части:
- Настройте пользователя (группу) для запуска сервера Nginx.
- Количество рабочих процессов
- Путь хранения PID процесса Nginx
- Путь хранения журнала ошибок
- Импорт файлов конфигурации
- ...
2. блок событий
Эта часть конфигурации в основном влияет на сетевое соединение между сервером Nginx и пользователем, в том числе:
- Установить сериализацию сетевых подключений
- Разрешить ли получение нескольких сетевых подключений одновременно
- Выбор событийной модели
- Настройка максимального количества подключений
- ...
3. http-блок
- Определить тип MIMI
- Пользовательский журнал службы
- Разрешить ли передачу файлов с помощью sendfile
- время соединения вышло
- Максимальное количество запросов на соединение
- ...
4. серверный блок
- Настроить прослушивание сетевого порта
- Доступ к журналам и страницам ошибок
- Конфигурация виртуального хоста на основе имени
- Конфигурация виртуального хоста на основе IP
- конфигурация блока локации
- ...
5. блок локации
- конфигурация местоположения
- Запрос конфигурации корневого каталога
- Изменить URI местоположения
- Конфигурация домашней страницы веб-сайта по умолчанию
- ...
Пример списка конфигурации
Вот пример краткого контрольного списка конфигурации Nginx:
Код конфигурации выглядит следующим образом:
user nobody nobody;
worker_processes 3;
error_log logs/error.log;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 8088;
server_name codesheep;
access_log /codesheep/webserver/server1/log/access.log;
error_page 404 /404.html;
location /server1/location1 {
root /codesheep/webserver;
index index.server2-location1.htm;
}
location /server1/location2 {
root /codesheep/webserver;
index index.server2-location2.htm;
}
}
server {
listen 8089;
server_name 192.168.31.177;
access_log /codesheep/webserver/server2/log/access.log;
error_page 404 /404.html;
location /server2/location1 {
root /codesheep/webserver;
index index.server2-location1.htm;
}
location /srv2/loc2 {
alias /codesheep/webserver/server2/location2/;
index index.server2-location2.htm;
}
location = /404.html {
root /codesheep/webserver/;
index 404.html;
}
}
}
Далее мы подробно проанализируем значение и использование нескольких основных инструкций в файле конфигурации в сравнении с этим примером списка конфигурации.
Конфигурация пользователя (группы) Nginx
Формат элемента конфигурации:user user [group];
- пользователь: указывает пользователя, который может запускать Nginx.
- группа: указывает группу пользователей, которая может запускать Nginx (необязательно)
Если директива пользователя не настроена или настроена какuser nobody nobody
, то все пользователи смогут запускать процесс Nginx по умолчанию.
Конфигурация количества рабочих процессов
Это ключевая конфигурация сервера Nginx для реализации параллельной обработки Формат элемента конфигурации:
worker_processes number数;
- число: максимальное количество рабочих процессов, которые может сгенерировать процесс Nginx.
- Если установлено значение auto, Nginx будет автоматически определять
По эксперименту из списка конфигурации выше настраиваем количество worker_processes: 3. После запуска сервера Nginx можем посмотреть на процесс Nginx на хосте в фоновом режиме:
ps -aux | grep nginx
понятно, понятноworker_processes
Смысл этой команды прост
конфигурация пути журнала ошибок
Формат элемента конфигурации:error_log file [可选日志级别];
- файл: указать вывод журнала в файл файл
- Общие необязательные уровни журнала включают в себя: информация, отладка, предупреждение, ошибка и т. д.
Конфигурация пути хранения PID процесса Nginx
Поскольку процесс Nginx работает в фоновом режиме как системный демон, этот параметр используется для настройки пути сохранения PID-файла конфигурации.
Формат элемента конфигурации:pid file;
- файл: укажите путь его хранения + имя файла
- Если не указано, по умолчанию используется путь
logs/nginx.pid
Конфигурация управляемой событиями модели
Формат элемента конфигурации:use model;
- Дополнительные элементы модели модели включают в себя: select, poll, kqueue, epoll, rtsig и т. д.
Конфигурация максимального количества подключений
Формат элемента конфигурации:worker_connections number数;
- Значение числа по умолчанию — 512, что указывает на максимальное количество подключений, которые каждый рабочий процесс может открыть одновременно.
Импорт файлов конфигурации
Эта конфигурация в основном используется для добавления других или сторонних файлов конфигурации Nginx в текущий основной файл конфигурации.
Формат элемента конфигурации:include conf_file;
Серийная конфигурация сетевых подключений
Формат элемента конфигурации:accept_mutex on;
- Конфигурация включена по умолчанию, что означает, что несколько рабочих процессов Nginx будут получать сериализованные соединения, чтобы предотвратить конкуренцию нескольких рабочих процессов за соединения.
Говоря об этой директиве, мы должны сначала объяснить, что такое так называемая «проблема шокирующего стада». С точки зрения сценария Nginx общий смысл таков: когда приходит новое сетевое соединение, несколько рабочих процессов будут пробуждены одновременно, но только один процесс может получить соединение и обработать его. Если слишком много процессов для пробуждения каждый раз, это фактически повлияет на часть производительности.
Так что здесь, если accept_mutex включен, несколько воркеров будут обрабатываться последовательно, и один из них будет разбужен; в противном случае, если accept_mutex выключен, все воркеры будут разбужены, но только один воркер сможет получить новое соединение. , другие рабочие процессы снова перейдут в состояние сна.
Включено это значение или нет, на самом деле связано с конкретным сценарием, который в определенной степени повлияет на пропускную способность системы. Nginx по умолчанию открывает accept_mutex, что также является консервативным подходом.
Несколько сетевых подключений Получение конфигурации
Формат элемента конфигурации:multi_accept off;
- Эта конфигурация по умолчанию отключена, что означает, что каждый рабочий процесс может получать только одно новое сетевое соединение за раз. Если вы хотите, чтобы каждый рабочий процесс Nginx одновременно получал несколько сетевых подключений, вам необходимо включить эту конфигурацию.
Определение MIME-типа
MIME-Type относится к типу носителя сетевого ресурса, то есть к типу ресурса, запрашиваемому внешним интерфейсом.
Формат элемента конфигурации:
include mime.types;
default_type type类型;
- Конфигурация включения используется для включения файла mime.types.
Можно использоватьcat mime.types
Чтобы просмотреть содержимое файла mime.types, мы обнаружили, что это структура типа, которая содержит типы MIME, распознаваемые различными браузерами, и имена суффиксов файлов соответствующих типов, как показано ниже:
Конфигурация журнала доступа
Формат элемента конфигурации:
access_log path [format];
- путь: путь + имя пользовательского журнала доступа
- формат: настройка формата журнала обслуживания (необязательно).
Конфигурация тайм-аута соединения
Формат элемента конфигурации:keepalive_timeout timeout [header_timeout];
- тайм-аут указывает, как долго сервер поддерживает соединение
- header_timeout означает установить время ожидания в поле Keep-Alive заголовка ответного пакета, необязательно.
конфигурация файла отправки
Формат элемента конфигурации:
sendfile on;
- Конфигурация sendfile используется для включения или отключения использования системного вызова sendfile() для передачи файлов, по умолчанию выключено.
- Примечание. Во многих веб-серверах механизм отправки файлов используется для обеспечения высокопроизводительной передачи файлов.
Конфигурация прослушивания сетевых адресов
Формат элемента конфигурации:
- Первый: настроить прослушиваемый IP-адрес:
listen IP[:PORT];
- Второй: настроить порт прослушивания:
listen PORT;
Практический пример:
listen 192.168.31.177:8080; # 监听特定IP和端口上的连接
listen 192.168.31.177; # 监听特定IP上所有端口的连接
listen 8080; # 监听特定端口上的所有IP的连接
Конфигурация виртуального хоста на основе имени или IP
Формат элемента конфигурации:server_name name1 name2 ...
- имя может иметь несколько параллельных имен, и имя здесь поддерживает запись регулярных выражений
Практический пример:
server_name ~^www\.codesheep\d+\.com$;
Что касается настройки виртуального хоста на основе IP, то здесь все еще проще:
Формат элемента конфигурации:server_name IP地址
конфигурация местоположения
Формат элемента конфигурации:location [ = | ~ | ~* | ^~ ] /uri/ {...}
- Здесь uri может содержать нечеткое сопоставление регулярных выражений.
Содержимое квадратных скобок перед uri является необязательным. Вот несколько распространенных ситуаций:
- "=": используется для стандартного uri, для точного совпадения строк
- «~»: используется для обычного uri, что указывает на совпадение с учетом регистра.
- «~*»: используется для обычного uri, что указывает на совпадение без учета регистра.
- "^~": используется для стандартного uri, ^ для сопоставления префикса, ~ для учета регистра.
конфигурация корневого каталога
Формат элемента конфигурации:root path;
- путь: указывает путь к корневому каталогу, где Nginx ищет ресурсы после получения запроса.
Конечно, вы также можете изменить путь запроса URI, полученный по местоположению, с помощью команды псевдонима.
alias path; # path为修改后的根路径
Конфигурация домашней страницы по умолчанию
Формат элемента конфигурации:index index_file ......
- index_file может содержать несколько имен файлов, разделенных пробелами, и первая найденная страница отвечает.
постскриптум
Эта статья находится в репозитории с открытым исходным кодом GitHub"Путь к программированию"GitHub.com/People's2coding/R…Он был записан в , и я его аранжировалМаршрут самообучения + очки знаний 6 основных направлений программирования (посты),тестовый сайт интервью,мое резюме,Несколько хардкорных заметок в формате pdf,а такжемоя программистская жизнь, добро пожаловать, чтобы оценить.
Увидимся в следующий раз!