Любой сайт — это набор HTML-файлов, стилей и картинок. Для отображения страницы компьютер отправляет серверу HTTP-запрос, запрашивая необходимые файлы. Сервер отвечает HTTP-ответом, содержащим запрашиваемую страницу.
Веб-сервер и сервер: в чём разница?
Как сервер находит файлы и отвечает на запросы? Ответ — веб-сервер. Это специальная программа, установленная на сервере (компьютере). Веб-сервер — это программа, а сервер — это компьютер, на котором она работает. Без веб-сервера современный интернет был бы невозможен.
Веб-сервер принимает HTTP-запросы от клиентов (пользователей сайта) и отправляет HTTP-ответы, содержащие страницы с информацией.
Nginx: один из лучших веб-серверов
Nginx (произносится как «Энджин экс») — один из самых популярных веб-серверов с открытым исходным кодом, написанный на языке Си. Он является промежуточным звеном между пользователями и серверным оборудованием.
Установка и настройка Nginx
Для использования Nginx необходимо установить его на серверном компьютере. После установки ввод IP-адреса сервера в адресную строку браузера покажет, работает ли Nginx. Настройка для конкретного сайта включает работу с папками и файлами:
- Папка с файлами сайта: Создаётся вручную; имя последней директории должно совпадать с именем домена.
- Главный конфигурационный файл Nginx: содержит основные настройки.
- Папка sites-available: здесь хранятся конфигурационные файлы для каждого сайта (расширение .conf).
В файле конфигурации (sites-available/*.conf) создаётся блок server:
- listen 80; — веб-сервер ожидает запросы на порту 80.
- server_name yourdomain.ru; — веб-сервер обрабатывает запросы к указанному домену.
- Блок location определяет путь к файлам сайта (root /путь/к/файлам) и имя основного файла (index index.html;).
Эта базовая конфигурация подходит для многостраничных сайтов, но не учитывает статический контент (картинки, стили).
Добавление статического контента и HTTPS
Для корректного отображения картинок и стилей необходимо добавить второй блок location с указанием путей к статическому контенту.
Современные сайты используют HTTPS. Для этого нужен SSL/TLS сертификат (например, бесплатный Let’s Encrypt). Конфигурация должна перенаправлять HTTP-запросы на HTTPS (порт 443) с помощью оператора return 301;. В конфигурации HTTPS указывается сертификат и ключ.
Кэширование
Для ускорения загрузки страниц используется кэширование. Добавление строки expires 1d; в блок со статическими файлами заставляет браузер кэшировать информацию на один день.
Основные настройки в nginx.conf
Файл nginx.conf содержит основные настройки:
- user — пользователь, от имени которого работает Nginx.
- worker_processes auto; — количество ядер процессора для обработки подключений (auto — автоматический выбор).
- worker_connections — количество одновременных подключений.
- gzip on; — включение сжатия файлов.
Nginx: преимущества и ограничения
Nginx обрабатывает запросы асинхронно, разделяя их на небольшие соединения и обрабатывая параллельно. Это делает его очень быстрым.
Однако, Nginx имеет ограничения в работе с микросервисами:
- Поддержка только протокола HTTP (не поддерживает gRPC и др.).
- Ограничения в маршрутизации запросов.
- Низкая масштабируемость по сравнению со специализированными инструментами (например, Linkerd).
Nginx может использоваться как балансировщик нагрузки, распределяя запросы между серверами для предотвращения перегрузки.
Nginx vs Apache
Главный конкурент Nginx — Apache. Nginx изначально создавался как более быстрая альтернатива Apache для обработки статического контента. Nginx превосходит Apache в обработке статического контента, а Apache лучше справляется с динамическим. Можно использовать Nginx и Apache вместе: Nginx для статического контента (фронтенд), Apache для динамического (бэкенд).
Nginx — мощный и быстрый веб-сервер, отлично подходящий для большинства сайтов, особенно для тех, которые в основном используют статический контент. Однако, для сложных проектов с микросервисами могут потребоваться более специализированные решения. JavaScript-файлы считаются статическим контентом.