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 состоит из:
- Master-процесса
- читает конфигурацию;
- управляет worker'ами;
- перезапускает их при reload.
- 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 читает конфигурацию
Важно понимать порядок:
- nginx.conf
- http { ... }
- include conf.d/*.conf
- server { ... }
- location { ... }
👉 Если что-то «не работает», почти всегда:
- директива переопределена ниже;
- неправильный location;
- конфиг не подключён через include.
Проверка и перезагрузка
Никогда не делай reload вслепую.
nginx -t
Если всё ок:
systemctl reload nginx
Или:
nginx -s reload
Типовые ошибки новичков
- ❌ Править не тот файл
- ❌ Забыть include
- ❌ Перезапускать вместо reload
- ❌ Ломать root и alias
- ❌ Путать try_files
Что дальше по серии
В следующих частях разберём:
- Virtual host'ы под несколько сайтов
- PHP-FPM и связку с Nginx
- Reverse proxy и API
- HTTPS, SSL и Certbot
- Оптимизацию и производительность
- Отладку и логи
Полезные материалы
Практические сниппеты для работы с Nginx:
- Проверка конфигурации и безопасная перезагрузка — команды nginx -t, systemctl reload nginx
- Кастомные страницы ошибок (error_page) — настройка 404, 500, 502, 503
- Настройка логов (access_log, error_log) — уровни логирования, форматирование, ротация
- Безопасность (server_tokens, заголовки) — скрытие версии, X-Frame-Options, CSP
- Сжатие gzip для текстовых файлов — оптимизация уровня сжатия и типов файлов
- Базовый server block для статического сайта — минимальная конфигурация для HTML/CSS/JS
Итог
Nginx — не «чёрный ящик», а простой и логичный инструмент, если понимать:
- структуру файлов,
- порядок обработки,
- базовые директивы.
Освоив фундамент, дальше всё собирается как конструктор.
Top comments (0)