Перейти на сайт
База знаний/Руководства/Установка и настройка Nginx на VPS. Веб-сервер, обратный прокси и SSL

Установка и настройка Nginx на VPS. Веб-сервер, обратный прокси и SSL

Что такое Nginx и зачем он нужен

Nginx это самый популярный веб-сервер в мире. Более 40% всех сайтов в интернете работают на Nginx. Используется как:

  • Веб-сервер для отдачи статических файлов (HTML, CSS, JS, изображения)
  • Обратный прокси для проксирования запросов к Node.js, Python, PHP-приложениям
  • Балансировщик нагрузки для распределения трафика между серверами
  • SSL-терминатор для обработки HTTPS-соединений

Nginx потребляет минимум памяти и отлично справляется с тысячами одновременных подключений, поэтому для VPS это идеальный выбор.

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

Установка из официального репозитория

apt update
apt install nginx -y

Проверка статуса

systemctl status nginx

Nginx автоматически запустится после установки. Откройте IP-адрес вашего сервера в браузере и вы увидите стандартную страницу приветствия Nginx.

Основные команды управления

# Запуск
systemctl start nginx

# Остановка
systemctl stop nginx

# Перезапуск
systemctl restart nginx

# Перезагрузка конфигурации без даунтайма
systemctl reload nginx

# Проверка конфигурации на ошибки
nginx -t

Настройка виртуального хоста (server block)

Создание директории сайта

mkdir -p /var/www/mysite.com/html
chown -R www-data:www-data /var/www/mysite.com

Создание конфигурации

nano /etc/nginx/sites-available/mysite.com

Содержимое файла:

server {
    listen 80;
    server_name mysite.com www.mysite.com;
    root /var/www/mysite.com/html;
    index index.html;

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

Активация сайта

ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

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

Если ваше приложение работает на порту 3000 (Node.js, Python и т.д.):

server {
    listen 80;
    server_name mysite.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

Установка SSL-сертификата Let's Encrypt

Установка Certbot

apt install certbot python3-certbot-nginx -y

Получение сертификата

certbot --nginx -d mysite.com -d www.mysite.com

Certbot автоматически:

  • Получит SSL-сертификат
  • Настроит Nginx для работы с HTTPS
  • Добавит редирект с HTTP на HTTPS

Автоматическое продление

Certbot добавляет cron-задачу автоматически. Проверить:

certbot renew --dry-run

Оптимизация производительности Nginx

Добавьте в /etc/nginx/nginx.conf:

# Сжатие
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 1000;

# Кэширование статических файлов
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

Полезные файлы и директории

Путь Описание
/etc/nginx/nginx.conf Главный конфиг
/etc/nginx/sites-available/ Конфиги сайтов
/etc/nginx/sites-enabled/ Активные сайты (симлинки)
/var/log/nginx/access.log Лог доступа
/var/log/nginx/error.log Лог ошибок

Всегда проверяйте конфигурацию командой nginx -t перед перезагрузкой, чтобы не уронить сервер из-за опечатки.