*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