
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 за считанные минуты, следуя инструкциям выше.