*Cube-Host — повний спектр хмарних послуг!!

Встановлення та налаштування Nginx на VPS

Installing and configuring Nginx on VPS

Nginx — це швидкий і надійний веб-сервер та зворотний проксі-сервер. У цьому посібнику ви встановите Nginx, створите конфігурацію сайту (блок сервера), увімкнете HTTPS за допомогою Let’s Encrypt, додасте основні налаштування продуктивності та, за бажанням, підключите PHP-FPM.

Для виробничих веб-сайтів виберіть стабільний VPS на базі Linux з достатньою потужністю процесора та оперативної пам’яті, а також швидким сховищем, щоб Nginx та ваша програма залишалися чуйними під час пікових навантажень.

Підготовка

  • VPS з Ubuntu 20.04/22.04/24.04 або Debian 11/12 (примітки щодо RHEL наведені нижче)
  • Користувач Sudo та доступ SSH
  • Доменне ім’я (рекомендується для HTTPS) та правильні записи DNS A/AAAA
  • Відкриті порти 80/443 у брандмауері/групі безпеки провайдера (та UFW, якщо використовується)

Встановлення Nginx та швидка перевірка

Встановіть Nginx, увімкніть його під час завантаження та перевірте відповідь HTTP.

sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx

# Check status
sudo systemctl status nginx --no-pager

# Quick HTTP check (local)
curl -I http://127.0.0.1
Installing Nginx on a VPS

Ви повинні побачити HTTP/1.1 200 OK. Стандартна стартова сторінка Nginx зазвичай знаходиться в /var/www/html/.

Дозвольте HTTP/HTTPS в UFW та перевірте службу

Якщо ви використовуєте UFW на Ubuntu/Debian, дозвольте веб-трафік. (Якщо ви не використовуєте UFW, переконайтеся, що порти 80/443 відкриті в панелі брандмауера вашого провайдера.)

sudo apt install -y ufw

# Allow SSH first (avoid lockout)
sudo ufw allow OpenSSH

# Allow web
sudo ufw allow 'Nginx Full'

# Enable if not enabled yet
sudo ufw enable
sudo ufw status verbose
Allowing HTTP and HTTPS in UFW

Створіть каталог сайту та тестову сторінку

Рекомендація: зберігайте кожен домен у власному каталозі, наприклад /var/www//html.

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com

# Simple test page
echo "example.com

Nginx is working

" > /var/www/example.com/html/index.html
Creating a website directory for Nginx

Створіть блок сервера (конфігурацію сайту)

Створіть файл /etc/nginx/sites-available/example.com:

sudo nano /etc/nginx/sites-available/example.com

Вставте цю мінімальну конфігурацію (замініть example.com на свій домен):

server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;

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

    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}
Nginx server block configuration example

Увімкніть веб-сайт, перевірте синтаксис і перезавантажте

# Enable site
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

# Optional: disable default site if it conflicts
# sudo rm -f /etc/nginx/sites-enabled/default

# Check config syntax
sudo nginx -t

# Reload
sudo systemctl reload nginx
Enabling Nginx site and reloading configuration

Якщо nginx -t виникають помилки, перевірте: кореневий шлях, server_name, дужки/крапки з комою та права доступу до файлу.

Gzip та базові заголовки безпеки

Створіть /etc/nginx/conf.d/optimizations.conf , щоб увімкнути gzip та кілька безпечних заголовків. Це розумна базова конфігурація для багатьох сайтів.

sudo nano /etc/nginx/conf.d/optimizations.conf

Вставте:

# Hide Nginx version
server_tokens off;

# Gzip compression (baseline)
gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_vary on;
gzip_proxied any;
gzip_types
  text/plain
  text/css
  text/xml
  application/json
  application/javascript
  application/xml
  application/xml rss
  image/svg xml;

# Basic security headers (safe defaults)
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;

Перезавантажте конфігурацію:

sudo nginx -t
sudo systemctl reload nginx
Nginx gzip and basic headers configuration

Примітка: Для виробничого середовища розгляньте CSP та Permissions-Policy, але впроваджуйте їх поетапно, щоб уникнути порушення роботи інтерфейсу.

HTTPS за 2 хвилини (Let’s Encrypt)

Як тільки DNS вкаже на ваш VPS і порт 80 буде відкритий, видайте безкоштовний сертифікат TLS за допомогою Certbot.

sudo apt update
sudo apt install -y certbot python3-certbot-nginx

# Issue certificate (replace domain   email)
sudo certbot --nginx -d example.com -d www.example.com --redirect 
  --agree-tos -m admin@example.com --no-eff-email

# Test auto-renewal
sudo certbot renew --dry-run
Certbot HTTPS setup for Nginx

Certbot зазвичай створює конфігурацію HTTPS і додає перенаправлення 301 на HTTPS. Перевірте в браузері: https://example.com.

Підтримка PHP-FPM (опціонально)

Якщо ви використовуєте PHP-додатки (WordPress, Laravel тощо), встановіть PHP-FPM і підключіть його до Nginx.

sudo apt update
sudo apt install -y php-fpm

# Find the PHP-FPM socket name (version differs)
ls -la /run/php/

Відредагуйте конфігурацію сайту (/etc/nginx/sites-available/example.com) та додайте блок PHP. Замініть шлях до сокета на той, який ви знайшли (у прикладі нижче використовується php8.2-fpm.sock).

location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

location ~ /.ht {
    deny all;
}

Перевірте та перезавантажте:

sudo nginx -t
sudo systemctl reload nginx
Connecting PHP-FPM to Nginx on a VPS

Швидко протестуйте (а потім видаліть):

echo "" > /var/www/example.com/html/info.php

Відкрийте https://example.com/info.php, переконайтеся, що все працює, а потім видаліть файл:

rm -f /var/www/example.com/html/info.php

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

  • Помилки: /var/log/nginx/error.log (та журнали помилок для кожного сайту, якщо налаштовано)
  • Доступ: /var/log/nginx/access.log (та журнали доступу для кожного сайту)
  • Швидкий перегляд: sudo tail -n 200 /var/log/nginx/error.log

Перевірка служб та портів прослуховування:

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

Перелік перевірок перед запуском

  • Каталог сайту існує, власник/права доступу правильні
  • Блок сервера збережено, nginx -t повертає OK
  • HTTP/HTTPS відкриті в UFW та в панелі брандмауера провайдера
  • Заголовки Gzip та baseline увімкнені
  • HTTPS видано Let’s Encrypt, автоматичне поновлення перевірено
  • (Якщо потрібно PHP) підключено PHP-FPM, info.php видалено

Коротко про AlmaLinux/Rocky/CentOS (сімейство RHEL)

У системах на базі RHEL конфігурація Nginx часто розміщується у /etc/nginx/conf.d/ (замість sites-available / sites-enabled). Брандмауер зазвичай firewalld.

sudo dnf install -y nginx
sudo systemctl enable --now nginx

# Open firewall
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# Server block example file:
# /etc/nginx/conf.d/example.com.conf
sudo nginx -t
sudo systemctl reload nginx

Розгорніть VPS на базі Linux, готовий до роботи з Nginx

Потрібна стабільна платформа для Nginx, HTTPS та вашого стеку додатків? Почніть із надійного VPS на базі Linux та розгорніть Nginx за лічені хвилини, скориставшись наведеними вище кроками.

Prev
Menu