← Назад в блог

Nginx: база и фундамент — как устроен веб-сервер и с чего начинать

Подробный разбор Nginx для начинающих: архитектура, структура конфигов, server и location блоки, отличия от Apache. Первая часть серии о настройке веб-сервера.

Nginx: база и фундамент — как устроен веб-сервер и с чего начинать

Требования

  • Базовое знание Linux/терминала
  • Доступ к серверу (VPS или локальный)

Nginx: база и фундамент — как устроен веб-сервер и с чего начинать

Введение

Если ты работаешь с сайтами, API или любым backend-проектом, рано или поздно ты упираешься в Nginx. Он стоит перед PHP, Python, Node.js, принимает входящий трафик, раздаёт статику, проксирует запросы и часто является первой точкой отказа.

В этой статье мы без магии и абстракций разберём:

  • что такое Nginx и зачем он нужен;
  • как он устроен изнутри;
  • где лежат конфигурации;
  • чем отличаются пути и подходы в разных ОС;
  • как читать конфиги и не бояться их трогать.

Это первая часть серии. Дальше будут:

  • virtual host’ы,
  • PHP-FPM,
  • reverse proxy,
  • HTTPS,
  • оптимизация и отладка.

Что такое Nginx и какую задачу он решает

Nginx — это высокопроизводительный веб-сервер и reverse proxy.

Если упрощать:

  • браузер приходит → Nginx

  • Nginx либо:

    • отдаёт файл (.html, .css, .js, изображения),
    • либо передаёт запрос дальше (PHP-FPM, Python, Node.js).

Почему Nginx, а не Apache

Ключевое отличие — архитектура.

  • Apache: процесс / поток на запрос
  • Nginx: event-driven, один процесс обслуживает тысячи соединений

Результат:

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

Архитектура Nginx простыми словами

Nginx состоит из:

  1. Master-процесса

    • читает конфигурацию;
    • управляет worker’ами;
    • перезапускает их при reload.
  2. Worker-процессов

    • обрабатывают реальные HTTP-запросы;
    • работают асинхронно;
    • не блокируются на каждом соединении.
Client

Nginx (master)

Nginx (worker 1..N)

PHP-FPM / backend / files

Количество worker’ов обычно равно количеству CPU-ядер.

worker_processes auto;

Где живёт Nginx в файловой системе

Это критически важно, потому что 90% ошибок — «не там правлю».

Linux (Ubuntu / Debian)

/etc/nginx/
├── nginx.conf
├── sites-available/
├── sites-enabled/
├── conf.d/
└── snippets/
  • nginx.conf — основной файл
  • sites-available — конфиги сайтов
  • sites-enabledактивные сайты (через symlink)
  • conf.d — дополнительные конфиги
  • snippets — переиспользуемые куски

Linux (CentOS / Alma / Rocky)

/etc/nginx/
├── nginx.conf
├── conf.d/
└── default.d/

Здесь чаще:

  • нет sites-available;
  • каждый сайт — отдельный файл в conf.d/*.conf.

macOS (через Homebrew)

/usr/local/etc/nginx/

или на Apple Silicon:

/opt/homebrew/etc/nginx/

Windows

Честно: не рекомендую для продакшена. Используется редко, структура нестабильна, отладка боль.


Главный файл nginx.conf

Пример минимального nginx.conf:

user www-data;
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile on;
    keepalive_timeout 65;

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

Что здесь важно

  • events — сетевые параметры
  • http — всё, что связано с HTTP
  • include — подключение сайтов и конфигов

👉 90% твоей работы будет внутри http и server


Server block — виртуальный хост

Аналог VirtualHost в Apache.

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/public;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

Ключевые директивы

  • listen — порт
  • server_name — домен
  • root — корень сайта
  • location — правила обработки URL

location: сердце Nginx

Примеры:

Статика

location /assets/ {
    expires 30d;
    access_log off;
}

PHP (пока без деталей)

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Запрет доступа

location ~ /\. {
    deny all;
}

Как Nginx читает конфигурацию

Важно понимать порядок:

  1. nginx.conf
  2. http { ... }
  3. include conf.d/*.conf
  4. server { ... }
  5. location { ... }

👉 Если что-то «не работает», почти всегда:

  • директива переопределена ниже;
  • неправильный location;
  • конфиг не подключён через include.

Проверка и перезагрузка

Никогда не делай reload вслепую.

nginx -t

Если всё ок:

systemctl reload nginx

Или:

nginx -s reload

Типовые ошибки новичков

  • ❌ Править не тот файл
  • ❌ Забыть include
  • ❌ Перезапускать вместо reload
  • ❌ Ломать root и alias
  • ❌ Путать try_files

Что дальше по серии

В следующих частях разберём:

  1. Virtual host’ы под несколько сайтов
  2. PHP-FPM и связку с Nginx
  3. Reverse proxy и API
  4. HTTPS, SSL и Certbot
  5. Оптимизацию и производительность
  6. Отладку и логи

Полезные материалы

Практические сниппеты для работы с Nginx:


Итог

Nginx — не «чёрный ящик», а простой и логичный инструмент, если понимать:

  • структуру файлов,
  • порядок обработки,
  • базовые директивы.

Освоив фундамент, дальше всё собирается как конструктор.

0 просмотров

Комментарии

Загрузка комментариев...
Пока нет комментариев. Будьте первым!