Серверы
  • Готовые серверы
  • Конфигуратор
  • Серверы с 1CPU
  • Серверы с 2CPU
  • 4 поколение AMD EPYC и Intel Xeоn
  • Серверы с AMD Ryzen и Intel Core i9
  • Серверы для хранения данных
  • Cерверы с портом 10 Гбит/c
  • GPU
  • Распродажа
  • VPS
    GPU
  • Выделенные серверы с GPU
  • Виртуальные серверы с GPU
  • Распродажа
    Маркетплейс
    Colocation
  • Размещение серверов в дата-центре в Москве
  • Обслуживание серверов в других ЦОД
  • Кластеры
    Прокат
    Услуги
  • Аренда сетевого оборудования
  • Защита L3-L4 от DDoS атак
  • IPV4 и IPV6 адреса
  • Администрирование серверов
  • Уровни технической поддержки
  • Мониторинг сервера
  • BYOIP
  • USB диск
  • IP-KVM
  • Трафик
  • Коммутация серверов
  • AI-чат-бот Lite
  • О нас
  • Работа в HOSTKEY
  • Панель управления серверами и API
  • Дата-центры
  • Сеть
  • Тест скорости
  • Специальные предложения
  • Отдел продаж
  • Для реселлеров
  • Гранты для специалистов по Data Science
  • Гранты для научных проектов и стартапов
  • Документация и Частые вопросы
  • Новости
  • Блог
  • Оплата
  • Документы
  • Сообщите о нарушении
  • Looking Glass
  • 18.11.2024

    Настройка Nginx на сервере

    server one
    HOSTKEY

    Nginx (изначально написанный как engine x) — это мощный и высокопроизводительный веб-сервер, который также можно использовать в качестве обратного прокси-сервера, балансировщика нагрузки или кэширующего сервера. Nginx — популярное решение для развертывания веб-сайтов и приложений благодаря своей высокой производительности, эффективности использования ресурсов и гибкости. В этой статье расскажем о процессе установки и настройки Nginx на сервере.

    Что такое Nginx?

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

    Установка Nginx

    Установка Nginx на Ubuntu/Debian

    Для серверов на базе Ubuntu или Debian установка Nginx проста и может быть выполнена с помощью команды apt:

    sudo apt update
    sudo apt install nginx

    Это обновит список пакетов и установит последнюю стабильную версию Nginx. После установки вы можете проверить статус сервиса с помощью следующей команды:

    sudo systemctl status nginx

    Установка Nginx на CentOS/RHEL/AlmaLinux/Rocky Linux

    Для серверов на базе CentOS 7 или Red Hat Enterprise Linux (RHEL) сначала нужно добавить репозиторий Nginx, а затем установить rpm-пакет с ним:

    yum install epel-release
    yum install nginx

    Для Centos Stream 8/AlmaLinux 8/Rocky Linux 8

    dnf config-manager--set-enabled powertools
    dnf install epel-release epel-next-release
    dnf install nginx

    Для CentOS Stream 9/Alma 9/Rocky Linux 9

    dnf config-manager --set-enabled crb
    dnf install epel-release epel-next-release
    dnf install nginx

    После установки вы можете запустить и включить сервис Nginx для автоматического запуска при загрузке системы:

    sudo systemctl start nginx
    sudo systemctl enable nginx

    Как запустить Nginx

    После установки Nginx, чтобы запустить сервер, выполните следующую команду:
    sudo service nginx start
    Для остановки сервера используйте команду:
    sudo service nginx stop
    Чтобы перезапустить Nginx (например, после изменения конфигурации), используйте команду:
    sudo service nginx reload

    Установка Nginx через Docker

    Если вы предпочитаете использовать Docker, установка Nginx в контейнере также не вызовет проблем. Нужно просто выполнить следующие шаги:

    1. Убедиться, что у вас установлен Docker.

    2. Выполнить следующую команду для запуска контейнера Nginx:

    docker run-d --name my_nginx-p 80:80-v /path/to/nginx/config:/etc/nginx/conf.d nginx

    Эта команда запустит контейнер Nginx, сопоставив порт 80 хоста с портом 80 контейнера, и смонтирует вашу локальную директорию конфигурации Nginx в контейнер.

    Если вы используете нестандартные директории для хранения конфигурации и размещения файлов вашего сервера, передайте их в строке запуска через параметр -v. Так, если у вас директорию сайта располагается по пути /root/site, добавьте в команду запуска:

    -v /root/site:/usr/share/nginx/html

    Она свяжет эту директорию с директорией usr/share/nginx/html (директория, которую Nginx использует для хранения статических файлов сайта по умолчанию) внутри контейнера Nginx.

    docker run -d --name my_nginx \
      -p 80:80 \
      -v /path/to/nginx/config:/etc/nginx/conf.d \
      -v /root/site:/usr/share/nginx/html \
      nginx

    Настройка Nginx

    Основная конфигурация Nginx находится в файле /etc/nginx/nginx.conf. В этом файле находятся основные директивы и ссылки на другие файлы конфигурации.

    Основные директивы Nginx

    Nginx имеет множество директив для настройки его поведения. Вот некоторые важные:

    • server. Определяет параметры для конкретного виртуального сервера.
    • listen. Указывает порт и IP-адрес, на котором будет слушать сервер.
    • server_name. Задает доменное имя или IP-адрес сервера.
    • location. Используется для настройки обработки запросов в зависимости от URL-пути.
    • root. Определяет корневую директорию для обслуживания статического контента.
    • proxy_pass. Осуществляет проксирование запросов на другой сервер.

    Переменные и команды

    Nginx поддерживает использование переменных в конфигурационных файлах, что позволяет динамически изменять поведение в зависимости от условий. Некоторые полезные переменные:

    Переменная Описание
    request_uri Запрошенный URI, начиная от корня веб-сайта (например /documentation). Не включает в себя протокол, имя хоста или порт
    host Хост из запроса
    remote_addr IP-адрес клиента

    Вы также можете использовать команды для выполнения действий при обработке запросов: например, return для немедленного возвращения ответа.

    SSL-сертификат: установка и настройка на Nginx

    Чтобы обеспечить безопасное соединение, вы можете установить SSL-сертификат на ваш сервер Nginx. Вот основные шаги:
    1. Получите SSL-сертификат от доверенного центра сертификации (ЦС) или создайте самоподписанный сертификат.

    2. Поместите файлы сертификата и ключа в безопасное место на сервере, например /etc/ssl/certs и /etc/ssl/private.

    3. Откройте файл конфигурации сервера Nginx (обычно /etc/nginx/sites-available/default) и добавьте или измените следующий блок:

      server {
      	listen 443 ssl;
      	ssl_certificate /etc/ssl/certs/your_certificate.crt;
      	ssl_certificate_key /etc/ssl/private/your_private_key.key;
      	...
      }

    После сохранения изменений перезагрузите Nginx для применения конфигурации.

    Настройка редиректов на Nginx

    Nginx позволяет легко перенаправлять запросы с одного URL-адреса на другой. Это может быть полезно при миграции сайтов или управлении несколькими доменами. Ниже приведен пример настройки редиректа:

    server {
      listen 80;
      server_name old.example.com;
    
      location / {
        return 301 https://new.example.com$request_uri;
      }
    }

    В этом примере все запросы к old.example.com будут перенаправлены на new.example.com с использованием кода ответа 301 (постоянное перенаправление).

    Статика и файлы

    Для обслуживания статических файлов, таких как HTML, CSS, JavaScript и изображения, Nginx может быть настроен следующим образом:

    server {
      listen 80;
      server_name static.example.com;
    
      root /var/www/static;
      index index.html;
    
      location / {
        try_files $uri $uri/ =404;
      }
    }

    В этом примере Nginx будет обслуживать статические файлы из директории /var/www/static.

    Настройка кэша

    Nginx может кэшировать ответы, что улучшает производительность и снижает нагрузку на бэкенд-серверы. Для настройки кэша используйте директиву proxy_cache:

    server {
      listen 80;
      server_name cache.example.com;
    
      location / {
        proxy_pass http://backend_server;
        proxy_cache cache_store;
        proxy_cache_valid 30m;
      }
    }

    Этот пример кэширует ответы с бэкенд-сервера в течение 30 минут.

    Нагрузка и балансировка

    Nginx отлично подходит для балансировки нагрузки между несколькими серверами. Вы можете настроить балансировку нагрузки с помощью директивы upstream:

    upstream backend_servers {
      server server1.example.com;
      server server2.example.com;
    }
    
    server {
      listen 80;
      server_name loadbalanced.example.com;
    
      location / {
        proxy_pass http://backend_servers;
      }
    }

    Мониторинг работы Nginx

    Для мониторинга состояния и производительности Nginx вы можете использовать различные инструменты, такие как:

    • Nginx Status Module. Предоставляет страницу статуса с информацией о текущих соединениях и обработанных запросах.
    • Zabbix. Популярная платформа для мониторинга, которая может собирать метрики из Nginx.
    • Graphite и Grafana. Инструменты визуализации, которые могут отображать данные производительности Nginx.

    Настройка безопасности

    Защита от DDoS-атак

    Nginx может помочь защитить ваш сервер от DDoS-атак с помощью следующих стратегий:

    • Ограничение скорости. Ограничьте количество запросов с одного IP-адреса с помощью директивы limit_req.
    • Фильтрация по IP-адресу. Блокируйте или разрешайте доступ на основе IP-адресов с помощью директивы allow и deny.
    • Настройка тайм-аутов. Настройте тайм-ауты для предотвращения блокировки ресурсов.

    Основные ошибки и коды ответов Nginx

    При работе с Nginx вы можете столкнуться с различными кодами ответов, указывающими на состояние запроса. Некоторые распространенные коды:

    Код Расшифровка
    200 OK Запрос успешно обработан
    301 Moved Permanently Постоянное перенаправление на новый URL-адрес
    404 Not Found Запрошенный ресурс не найден
    502 Bad Gateway Ошибка при проксировании запроса на бэкенд-сервер

    Для более подробного описания кодов ответов Nginx смотрите нашу статью о кодах ответа HTTP.

    Заключение

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

    Другие статьи

    16.12.2024

    Как посмотреть запущенные контейнеры в Docker?

    Хотите узнать, какие контейнеры запущены в вашем Docker? В этой статье мы расскажем о простых командах, которые помогут это сделать.

    28.11.2024

    OpenWebUI обновился. Что нового привнесла версия 0.4.5?

    OpenWebUI обновился до версии 0.4.5! Новые функции для RAG, групп пользователей, аутентификации, улучшенная производительность и многое другое. Узнайте, как обновиться и использовать его возможности на максимум.

    18.11.2024

    Рейтинг быстрых VPS и VDS-серверов

    Топ-10 самых быстрых VPS и VDS-серверов: узнайте, какие серверы обеспечат максимальную производительность и скорость для ваших проектов.

    25.10.2024

    TS3 Manager: что происходит, когда додумываешь документацию

    Есть проблемы с подключением к TS3 Manager после установки на VPS? Управление сервером TeamSpeak через TS3 Manager не такое уж и простое, как кажется. Давайте решим проблемы вместе!

    07.10.2024

    Список всех кодов состояния HTTP-ответа сервера

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

    HOSTKEY Выделенные серверы в Европе, России и США Готовые решения и индивидуальные конфигурации серверов на базе процессоров AMD, Intel, карт GPU, Бесплатной защитой от DDoS-атак и безлимитный соединением на скорости 1 Гбит/с 30
    4.3 48 48
    Upload