Статья 38 из 75
Гайды
Nginx: виртуальные хосты и proxy
Nginx на VPS — стандарт для сайтов и reverse proxy. Установка и базовая настройка.
Что такое Nginx и зачем он нужен
Заголовок раздела «Что такое Nginx и зачем он нужен»Nginx это самый популярный веб-сервер в мире. Более 40% всех сайтов в интернете работают на Nginx. Используется как:
- Веб-сервер для отдачи статических файлов (HTML, CSS, JS, изображения)
- Обратный прокси для проксирования запросов к Node.js, Python, PHP-приложениям
- Балансировщик нагрузки для распределения трафика между серверами
- SSL-терминатор для обработки HTTPS-соединений
Nginx потребляет минимум памяти и отлично справляется с тысячами одновременных подключений, поэтому для VPS это идеальный выбор.
Установка Nginx на Ubuntu / Debian
Заголовок раздела «Установка Nginx на Ubuntu / Debian»Установка из официального репозитория
Заголовок раздела «Установка из официального репозитория»apt updateapt 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)
Заголовок раздела «Настройка виртуального хоста (server block)»Создание директории сайта
Заголовок раздела «Создание директории сайта»mkdir -p /var/www/mysite.com/htmlchown -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 -tsystemctl reload nginx
Настройка 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
Заголовок раздела «Установка SSL-сертификата Let’s Encrypt»Установка Certbot
Заголовок раздела «Установка Certbot»apt install certbot python3-certbot-nginx -yПолучение сертификата
Заголовок раздела «Получение сертификата»certbot --nginx -d mysite.com -d www.mysite.comCertbot автоматически:
- Получит SSL-сертификат
- Настроит Nginx для работы с HTTPS
- Добавит редирект с HTTP на HTTPS
Автоматическое продление
Заголовок раздела «Автоматическое продление»Certbot добавляет cron-задачу автоматически. Проверить:
certbot renew --dry-runОптимизация производительности Nginx
Заголовок раздела «Оптимизация производительности 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перед перезагрузкой, чтобы не уронить сервер из-за опечатки.