*КУБ — полный комплекс облачных услуг!

Установка и настройка Nginx на VPS

VPS
Установка и настройка Nginx на VPS

Подготовка

  • VPS с Ubuntu 20.04/22.04/24.04 или Debian 11/12.
  • Пользователь с правами sudo, доступ по SSH.
  • Домен (для HTTPS) и открытые порты 80/443 в панели провайдера.

Установка Nginx и быстрая проверка

sudo apt update && sudo apt -y upgrade
sudo apt -y install nginx
sudo systemctl enable --now nginx
curl -I http://127.0.0.1
Встановлення Nginx

Ожидаем заголовки 200 OK. Стартовая страница Nginx обычно находится в /var/www/html/.

Разрешаем HTTP/HTTPS в UFW и проверяем службу

sudo systemctl status nginx --no-pager
sudo ufw allow 'Nginx Full'   # Открывает порты 80 и 443
sudo ufw enable
sudo ufw status
Дозволяємо HTTP HTTPS

Если UFW не используется — убедитесь, что порты 80/443 открыты в облачном брандмауэре/панели провайдера.

Создаем каталог сайта и тестовую страницу

sudo mkdir -p /var/www/example.com/html
echo 'Hello from Nginx!' | sudo tee /var/www/example.com/html/index.html
sudo chown -R $USER:$USER /var/www/example.com
Створюємо каталог

Рекомендуем для каждого домена отдельный каталог: /var/www/<домен>/html.

Создаем server block (конфиг сайта)

Файл /etc/nginx/sites-available/example.com:

server {
  listen 80;
  server_name example.com www.example.com;

  root /var/www/example.com/html;
  index index.html index.php;

  location / {
    try_files $uri $uri/ =404;
  }
}
Створюємо server block

Включаем сайт, проверяем синтаксис и перезагружаем

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t     # syntax is ok
sudo systemctl reload nginx
curl -I http://example.com
Включаємо сайт

Если nginx -t выдает ошибки — исправь конфиг (путь root, доменные имена, закрывающие скобки и т. д.).

Gzip и базовые security-заголовки

Создайте файл /etc/nginx/conf.d/optimizations.conf:

# Gzip (стандартные типы)
gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript application/xml text/xml application/rss xml image/svg xml;

# Security-заголовки (базовые)
add_header X-Frame-Options SAMEORIGIN always;
add_header X-Content-Type-Options nosniff always;
add_header Referrer-Policy strict-origin-when-cross-origin always;

Перезапустите конфиг:

sudo nginx -t && sudo systemctl reload nginx
Gzip і базові security-заголовки

Для производственной среды рассмотрите CSP/Permissions-Policy — но тестируйте пошагово, чтобы не «упустить» фронтенд.

HTTPS за 2 минуты (Let’s Encrypt)

sudo apt -y install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
# автообновление сертификатов
systemctl status certbot.timer
HTTPS за 2 хвилини

Certbot настроит 301-редирект на HTTPS и создаст задание для автоматического обновления. Проверь https://example.com.

Поддержка PHP-FPM (опционально)

Устанавливаем FPM и подключаем его к Nginx:

sudo apt -y install php-fpm

В конфигурацию сайта (/etc/nginx/sites-available/example.com) добавьте блок:

location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/run/php/php8.2-fpm.sock;   #проверьте текущую версию
}

Проверяем и перезапускаем:

sudo nginx -t && sudo systemctl reload nginx
Підтримка PHP-FPM

Для проверки создайте /var/www/example.com/html/info.php с <?php phpinfo(); ?>, откройте в браузере — затем удалите файл.

Логи и быстрый анализ проблем

  • Ошибки: /var/log/nginx/error.log
  • Доступ: /var/log/nginx/access.log
  • Быстро просмотреть последние строки: sudo tail -n 200 /var/log/nginx/error.log

Проверить юнит и порты:

sudo systemctl status nginx
sudo ss -tulpn | grep -E ':80|:443'

Чек-лист перед запуском

  • Директория сайта создана, владелец/права корректны.
  • Конфигурация server block записана, nginx -t — OK.
  • HTTP/HTTPS открыты в UFW/брандмауэре.
  • Включены gzip и базовые security-заголовки.
  • HTTPS выдан Let’s Encrypt, автообновление активно.
  • (Если требуется PHP) — PHP-FPM подключен, файл info.php удален.

Кратко для AlmaLinux/Rocky/CentOS (семейство RHEL)

sudo dnf -y install nginx
sudo systemctl enable --now nginx
sudo firewall-cmd --add-service=http --add-service=https --permanent
sudo firewall-cmd --reload
# каталоги/конфигурации:
# root обычно /usr/share/nginx/html или /var/www/<домен>/html
# конфиги: /etc/nginx/nginx.conf і /etc/nginx/conf.d/*.conf
sudo dnf -y install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
sudo dnf -y install php-fpm
# fastcgi_pass unix:/run/php-fpm/www.sock (или свой путь)

Menu