Главная
|
Услуги и цены
VDS
Выделенные серверы
Размещение сервера
|
F.A.Q
|
О компании
|

Установка Nginx на CentOS

Nginx — один из самых популярных веб-серверов. Он используется для размещения сайтов, работы в качестве обратного прокси, балансировщика нагрузки и отдачи статических файлов. Благодаря высокой производительности и небольшому потреблению ресурсов Nginx отлично подходит для VPS/VDS.

  • 1. Подготовка системы
  • 2. Установка Nginx
  • 3. Открываем доступ извне (если он закрыт)
  • 4. Где лежат конфиги и как их изменять
  • 5. Создаём конфигурацию сайта
  • 6. Проверяем конфигурацию
  • 7. Создаём директорию сайта
  • 8. SELinux
  • 9. Логи Nginx
  • 10. Настройка HTTPS (Let's Encrypt)
  • 11. Проверяем автоматическое продление
  • 12. Что делать, если Nginx не запускается
  • Полезные команды

1. Подготовка системы

Если вы только купили сервер:
Подключитесь к серверу
Выполните подготовку сервера к работе

1. Установка Nginx

В современных версиях CentOS используется пакетный менеджер dnf.

sudo dnf install nginx -y

Если пакет не найден, сначала обновите список репозиториев:

sudo dnf makecache

После установки необходимо включить автозапуск и запустить сервис:

sudo systemctl enable --now nginx

Проверяем состояние

sudo systemctl status nginx

Если увидите статус active (running) — всё работает.

Проверка состояния Nginx на CentOS

Подробнее о systemctl: Как перезапустить сервис в Linux

2. Открываем доступ извне (если он закрыт)

В большинстве дистрибутивов CentOS используется firewalld.
Разрешаем HTTP:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

Если планируете использовать HTTPS:

sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Если используется другой файрвол, откройте необходимые порты способом, который поддерживает именно он.

Подробная статья про iptables: https://62yun.ru/blog/article/iptables-open-close-port

Если файрвол отключён, ничего делать не нужно.

3. Где лежат конфиги и как их изменять

Структура каталогов практически такая же, как в Ubuntu:

  • /etc/nginx/nginx.conf — главный конфигурационный файл.
  • /etc/nginx/conf.d/ — дополнительные конфигурации сайтов.

В отличие от Ubuntu, каталогов sites-available и sites-enabled обычно нет.

Каждый сайт представляет собой отдельный .conf файл внутри conf.d.

4. Создаём конфигурацию сайта

Предположим, ваш домен — example.com.

Создаём файл

sudo nano /etc/nginx/conf.d/example.com.conf

Как работать с nano писали в статье:
https://62yun.ru/blog/article/nano-linux

Если на сервере будет несколько сайтов, для каждого создаётся отдельный файл конфигурации в каталоге /etc/nginx/conf.d/.

Добавляем минимальный конфиг

server {
    listen 80;
    server_name 147.45.113.2; # поменяйте на свой домен или ip адрес

    root /var/www/example.com;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}
  • server_name определяет, для какого домена применяется конфигурация.
  • root задаёт директорию сайта.
  • try_files проверяет существование файлов и возвращает ошибку 404, если файл отсутствует.

5. Проверяем конфигурацию

sudo nginx -t

Если увидите сообщение:

syntax is ok
Проверка конфигурации Nginx на CentOS

можно применить изменения:

sudo systemctl reload nginx

reload перечитывает конфигурацию без остановки сервера. Для пользователей сайт останется доступным.

6. Создаём директорию сайта

Если папки ещё нет:

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

Простейшая страница:

<h1>Hello</h1>

Теперь при открытии домена или IP-адреса, указанного в конфигурации, должна отображаться эта страница.
Если отображается ошибка 403, то смотрите следующий пункт.

Проверка отображения сайта через Nginx

7. SELinux

CentOS по умолчанию использует SELinux, который может запретить Nginx доступ к файлам сайта даже при правильных правах.

Проверить состояние можно командой:

getenforce

Если вывод:

Enforcing

необходимо назначить правильный контекст:

sudo chcon -R -t httpd_sys_content_t /var/www/example.com

Чтобы изменения не исчезли после перезагрузки системы:

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
sudo restorecon -Rv /var/www/example.com

Если команда semanage отсутствует, установите пакет:

sudo dnf install policycoreutils-python-utils -y

8. Логи Nginx

Основные журналы:

  • /var/log/nginx/access.log
  • /var/log/nginx/error.log

Просматривать ошибки в реальном времени:

tail -f /var/log/nginx/error.log

Во многих случаях причина проблемы становится понятна сразу после просмотра журнала.

Подробнее про логи можно прочитать в статье:
https://62yun.ru/blog/article/logs-journalctl-tail-logrotate

9. Настройка HTTPS (Let's Encrypt)

Устанавливаем Certbot:

sudo dnf install certbot python3-certbot-nginx -y

Получаем сертификат:

sudo certbot --nginx -d example.com -d www.example.com

Certbot автоматически обновит конфигурацию Nginx и настроит автоматическое продление сертификатов.

Если продление не удастся выполнить, на указанную электронную почту придёт уведомление.

10. Проверяем автоматическое продление

sudo certbot renew --dry-run

Если ошибок нет, сертификаты будут продлеваться автоматически.

11. Что делать, если Nginx не запускается

Проверить конфигурацию

sudo nginx -t

Посмотреть журнал ошибок

tail -f /var/log/nginx/error.log

Проверить SELinux

getenforce

Если проблема связана с доступом к файлам, скорее всего требуется настроить контексты безопасности.

Проверить, занят ли порт

sudo lsof -i :80

Если порт используется другим веб-сервером (например, Apache), остановите ненужный сервис или измените порт.

Полезные команды

1. Применить новую конфигурацию без остановки сайтов

sudo systemctl reload nginx

2. Проверить конфигурацию

sudo nginx -t

3. Включить сжатие

Добавьте в /etc/nginx/nginx.conf:

gzip on;
gzip_types text/plain text/css application/json application/javascript;

4. Кэширование статических файлов

Внутри блока server:

location ~* \.(jpg|jpeg|png|css|js|ico)$ {
    expires max;
    access_log off;
}
logo
© 2022 62yun
Все права защищены
vk.com/62yuncom
support@62yun.ru
logo
vk.com/62yuncom
support@62yun.ru
Услуги
VDS Выделенные серверы
Полезное
F.A.Q О компании Политика конфиденциальности Оферта
Способы оплаты
wechatpay visa mastercard
MirAccept
Партнеры
25port
© 2022 62yun Все права защищены
ВВЕРХ