Углубленный анализ файлов конфигурации Nginx
Углубленный анализ файлов конфигурации Nginx

Предисловие

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

1. Базовая структура файла конфигурации Nginx.

NginxКонфигурационный файл обычно находится по адресу/etc/nginx/nginx.conf。Его основная структура выглядит следующим образом:

Язык кода:yaml
копировать
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

2. Подробное объяснение элементов конфигурации.

  1. глобальная директива
  • user: обозначениеNginxПользователь, под которым запущен процесс。Значение по умолчанию обычноnginx
  • worker_processes: Укажите количество рабочих процессов Nginx. Настройка в зависимости от количества ядер ЦП сервера может повысить производительность.
  • error_log: Определите расположение файла журнала ошибок и уровень журнала.。Уровни журнала включают в себяdebuginfonoticewarnerrorcritждать。
  • pid: Укажите место, где хранится файл идентификатора процесса Nginx.
  1. модуль событий
Язык кода:yaml
копировать
events {
    worker_connections  1024;
}
  • worker_connections: Максимальное количество соединений, которые каждый рабочий процесс может обрабатывать одновременно.。иworker_processesРешили вместеNginxвозможности одновременной обработки。
  1. HTTP-модуль
Язык кода:yaml
копировать
http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;
}
  • include: Содержит другие файлы конфигурации。/etc/nginx/mime.typesопределенныйMIMEтип,/etc/nginx/conf.d/*.confСодержит другие файлы подконфигурации.。
  • default_type: Установите тип MIME по умолчанию.
  • log_format: Определите формат журнала.
  • access_log: Определите расположение файлов журнала доступа и используемый формат журнала.
  • sendfile: Включите эффективный режим передачи файлов. Включено по умолчанию.
  • keepalive_timeout: Определяет, как долго клиентское соединение остается активным.

3. Серверный модуль

httpв модулеserverкусокопределенный Конфигурация виртуального хоста:

Язык кода:yaml
копировать
server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page  404              /404.html;
    location = /404.html {
        internal;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        internal;
    }
}
  • listen: Определите порт, который прослушивает сервер.
  • server_name: Определите имя виртуального хоста.
  • location: Используется для сопоставления URI и определения способа обработки запросов.
  • root: Устанавливает корневой каталог запроса.
  • index: Определите индексный файл по умолчанию.
  • error_page: обозначениестраница ошибки。когда произойдет404При ошибке,Перейти к/404.html

4. Команда определения местоположения

locationДирективы, используемые для сопоставления запросовURI,Запросы могут обрабатываться на основе различных правил сопоставления.

  • Точное совпадение:
Язык кода:bash
копировать
location = / {
    # точное совпадение
}
  • Соответствие префиксов:
Язык кода:yaml
копировать
location /images/ {
    # сопоставление префиксов
}
  • Обычный матч:
Язык кода:yaml
копировать
location ~* \.(gif|jpg|jpeg)$ {
    # Обычный матч
}
  • Приоритет совпадения: точное совпадение > Обычный матч > Соответствие префиксов.

5. Настройка обратного прокси

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

Язык кода:yaml
копировать
server {
    listen       80;
    server_name  example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  • proxy_pass: Укажите адрес внутреннего сервера.
  • proxy_set_header: Установите информацию заголовка запроса и передайте реальный IP-адрес клиента и другую информацию.

6. Конфигурация балансировки нагрузки

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

Язык кода:yaml
копировать
http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen       80;
        server_name  example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}
  • upstream: Определите группу внутренних серверов.
  • proxy_pass: Перенаправьте запрос группе внутренних серверов.

Подвести итог

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

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода