*КУБ - повний комплекс хмарних послуг!

Підготовка

Встановлення 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 і створить job для авто-продовження. Перевір 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(); ?>, відкрийте в браузері — потім видаліть файл.

Логи та швидкий аналіз проблем

Перевірити юніт і порти:

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

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

Коротко для 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