Перейти к основному контенту

Установка и настройка Nginx

intro-NGINX-SSL-PHP-install-linux-planetahost.png

Подробности урока

Уровень сложности Лёгкий
Права root Требуются
Требования Терминал Linux
Категория Установка ПО
Совместимость с ОС Debian, Ubuntu
Примерное время чтения 1 час

Введение

Nginx - это производительный веб-сервер, который используется для размещения сайтов, работы в роли reverse proxy и балансировщика нагрузки.

В данной инструкции рассмотрим полный базовый сценарий:

  • установка Nginx
  • настройка тестового сайта
  • подключение PHP (php-fpm)
  • подготовка конфигурации под SSL (Let’s Encrypt)

Установка

В инструкции будет использоваться домен tex-lab.ru и IP сервера 62.173.138.27 как пример. Обязательно замените их на свои реальные домен и IP при настройке.

Обновим список пакетов:

apt update

Установим Nginx:

apt install nginx -y

Проверим статус:

systemctl status nginx

изображение.png

Сервис должен быть в состоянии active (running).

Проверка работы

Открой в браузере:

http://IP_СЕРВЕРА

изображение.png

Если отображается стандартная страница, то Nginx работает.

Основные пути

Основной конфиг:

/etc/nginx/nginx.conf

Конфиги сайтов:

/etc/nginx/sites-available/

Активные сайты:

/etc/nginx/sites-enabled/

Каталог сайта:

/var/www/

Создание тестового сайта

Создадим директорию:

mkdir -p /var/www/tex-lab

Создадим HTML-файл:

nano /var/www/tex-lab/index.html

Пример содержимого:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>tex-lab.ru</title>
</head>
<body>
    <h1>Работает!</h1>
    <p>Сайт tex-lab.ru успешно настроен</p>
</body>
</html>

изображение.png

Настройка сайта в Nginx

Создадим конфиг:

nano /etc/nginx/sites-available/tex-lab

Пример:

server {
    listen 80;
    server_name tex-lab.ru www.tex-lab.ru;

    root /var/www/tex-lab;
    index index.html;

    access_log /var/log/nginx/tex-lab.access.log;
    error_log /var/log/nginx/tex-lab.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

изображение.png

Активируем сайт:

ln -s /etc/nginx/sites-available/tex-lab /etc/nginx/sites-enabled/

Проверим конфиг:

nginx -t

изображение.png

Применим:

systemctl reload nginx

Далее надо открыть в браузере сайт и должна появится страница с нашим текстом:

изображение.png

Установка PHP

Установим PHP и php-fpm:

apt install php-fpm php-cli php-mysql -y

Проверим:

systemctl status php*-fpm.service

изображение.png

Подключение PHP в Nginx

Откроем конфиг сайта:

nano /etc/nginx/sites-available/tex-lab

Обновим:

server {
    listen 80;
    server_name tex-lab.ru www.tex-lab.ru;

    root /var/www/tex-lab;
    index index.php index.html;

    access_log /var/log/nginx/tex-lab.access.log;
    error_log /var/log/nginx/tex-lab.error.log;

    location / {
        try_files $uri $uri/ =404;
    }

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

    location ~ /\.ht {
        deny all;
    }
}

В этой строчке надо указать версию PHP на момент установки, иначе Вы получите ошибку 502

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

Проверка PHP

Создадим файл:

nano /var/www/tex-lab/info.php

Содержимое:

<?php phpinfo(); ?>

Применим:

systemctl reload nginx

Откройте:

http://tex-lab.ru/info.php

изображение.png

После проверки работоспособности обязательно удалите этот файл, так как он плохо влияет на безопасность!

rm /var/www/tex-lab/info.php

Подключение SSL-сертификата

В примере мы подключаем сертификат Let’s Encrypt, который Вы можете выпустить по нашей инструкции, но можно подключить так любой сертификат.

Откроем конфиг:

nano /etc/nginx/sites-available/tex-lab

И сделаем так:

server {
    listen 80;
    server_name tex-lab.ru www.tex-lab.ru;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name tex-lab.ru www.tex-lab.ru;

    root /var/www/tex-lab;
    index index.php index.html;

    ssl_certificate /etc/letsencrypt/live/tex-lab.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tex-lab.ru/privkey.pem;

    access_log /var/log/nginx/tex-lab.access.log;
    error_log /var/log/nginx/tex-lab.error.log;

    location / {
        try_files $uri $uri/ =404;
    }

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

    location ~ /\.ht {
        deny all;
    }
}

Проверка конфига:

nginx -t

Перезапуск:

systemctl restart nginx

изображение.png

Заключение

В рамках данной инструкции была выполнена базовая настройка веб-сервера Nginx на Debian с подготовкой окружения для размещения сайта и обработки PHP, а также добавлена конфигурация для последующего подключения SSL-сертификата.

Полученная конфигурация может использоваться как отправная точка для дальнейшего развёртывания и доработки проекта с учётом требований к производительности, безопасности и стабильности.