Установка и настройка 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перед перезагрузкой, чтобы не уронить сервер из-за опечатки.