
Nginx — це швидкий і надійний веб-сервер та зворотний проксі-сервер. У цьому посібнику ви встановите Nginx, створите конфігурацію сайту (блок сервера), увімкнете HTTPS за допомогою Let’s Encrypt, додасте основні налаштування продуктивності та, за бажанням, підключите PHP-FPM.
Для виробничих веб-сайтів виберіть стабільний VPS на базі Linux з достатньою потужністю процесора та оперативної пам’яті, а також швидким сховищем, щоб 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

Ви повинні побачити HTTP/1.1 200 OK. Стандартна стартова сторінка Nginx зазвичай знаходиться в /var/www/html/.
Якщо ви використовуєте 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

Рекомендація: зберігайте кожен домен у власному каталозі, наприклад /var/www/.
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

Створіть файл /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;
}
}

# 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

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

Примітка: Для виробничого середовища розгляньте CSP та Permissions-Policy, але впроваджуйте їх поетапно, щоб уникнути порушення роботи інтерфейсу.
Як тільки 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 і додає перенаправлення 301 на HTTPS. Перевірте в браузері: https://example.com.
Якщо ви використовуєте 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

Швидко протестуйте (а потім видаліть):
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 повертає OKinfo.php видаленоУ системах на базі 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
Потрібна стабільна платформа для Nginx, HTTPS та вашого стеку додатків? Почніть із надійного VPS на базі Linux та розгорніть Nginx за лічені хвилини, скориставшись наведеними вище кроками.