Перейти к основному содержанию
Поднимем на сервере веб-сервер Nginx, отдадим статический сайт, подключим PHP и наметим путь к HTTPS. Команды для root на Ubuntu/Debian; под обычным пользователем добавляй sudo. IP и root-доступ к серверу — из карточки VPS в боте @lumivps_bot.
Если не хочешь возиться с конфигами вручную — проще задеплоить приложение через Coolify: он сам поднимет reverse-proxy и SSL. Этот гайд — для тех, кто настраивает руками.

Установка Nginx

1

Установить пакет

apt update
apt install nginx
Сервис запустится автоматически.
2

Проверить

Открой в браузере http://IP-твоего-сервера. Должна появиться стартовая страница Nginx («Welcome to nginx!»). Если страница не открывается — скорее всего, закрыт порт 80 (см. предупреждение про файрвол ниже).

Как устроены конфиги

Сайты в Nginx на Ubuntu/Debian описываются отдельными файлами:
  • /etc/nginx/sites-available/ — здесь лежат конфиги всех сайтов;
  • /etc/nginx/sites-enabled/ — сюда ставится симлинк на активные.
То есть ты создаёшь файл в sites-available, а потом «включаешь» его симлинком в sites-enabled.
# включить сайт
ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/

# проверить синтаксис перед применением
nginx -t

# применить изменения без обрыва соединений
systemctl reload nginx
Всегда запускай nginx -t перед reload. Если в конфиге ошибка, reload её не применит и Nginx продолжит работать на старой конфигурации — сайт не ляжет.

Простой сайт на статике

Создай каталог под файлы сайта и положи туда index.html:
mkdir -p /var/www/site
echo '<h1>Работает</h1>' > /var/www/site/index.html
Создай конфиг /etc/nginx/sites-available/site:
/etc/nginx/sites-available/site
server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;
    root /var/www/site;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
Включи сайт и перезагрузи Nginx:
ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Дефолтный конфиг default в sites-enabled обычно перехватывает запросы. Если твой сайт не открывается, удали симлинк дефолта: rm /etc/nginx/sites-enabled/default и снова сделай reload.

Добавить PHP

Чтобы Nginx обрабатывал .php (WordPress, скрипты и т.п.), нужен PHP-FPM:
1

Установи PHP-FPM

apt install php-fpm
2

Добавь обработчик PHP в конфиг сайта

Путь к сокету зависит от версии PHP. Пакет создаёт версионный сокет, неверсионного /run/php/php-fpm.sock не существует — nginx упадёт с 502. Сначала посмотри, какие сокеты есть у тебя:
ls /run/php/
Ты увидишь что-то вроде php8.3-fpm.sock. Подставь точное имя в конфиг ниже.
Добавь внутрь server { ... } блок location для .php:
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;  # подставь свою версию
}
3

Проверь и перезагрузи Nginx

nginx -t
systemctl reload nginx
4

Проверь работу PHP

Создай /var/www/site/info.php с содержимым <?php phpinfo(); и открой http://example.com/info.php. Должна появиться таблица с информацией о PHP. После проверки удали этот файл — он раскрывает конфигурацию сервера.

HTTPS

Сайт на http:// стоит закрыть сертификатом, чтобы работал https://. Сертификат ставится отдельно — бесплатно через Let’s Encrypt, это автоматизирует утилита certbot. Полный разбор — на отдельной странице:

SSL-сертификат (Let's Encrypt)

Как бесплатно выпустить сертификат и включить HTTPS с автопродлением.
Чтобы сайт был доступен снаружи, открой порты 80 (HTTP) и 443 (HTTPS) в файрволе. Как настроить — см. файрвол.
Альтернатива Nginx — веб-сервер Apache (apt install apache2); принципы те же, но конфиги и синтаксис отличаются.

Куда дальше

SSL-сертификат

Бесплатный HTTPS через Let’s Encrypt с автопродлением.

Файрвол

Открой порты 80 и 443 для веб-трафика.