Если вы ищете высокопроизводительный веб-сервер, Nginx — отличный выбор. Nginx — это легкий и эффективный веб-сервер, который может легко обрабатывать веб-сайты с большим трафиком. В этой статье мы проведем вас через шаги по установке Nginx на CentOS.

Nginx — это веб-сервер, созданный в 2002 году с упором на высокую производительность и низкое потребление ресурсов. Это популярный выбор для обслуживания статического контента и обратного проксирования для серверов приложений, таких как Apache или Node.js. CentOS — это популярный дистрибутив Linux на основе Red Hat Enterprise Linux (RHEL). Он известен своей стабильностью и функциями безопасности, что делает его хорошим выбором для серверных сред.

Проверка системных требований для установки Nginx

Перед установкой Nginx на CentOS важно убедиться, что ваша система соответствует минимальным требованиям. Nginx требует операционную систему на базе Linux с минимум 256 МБ ОЗУ. Кроме того, для установки Nginx у вас должен быть root-доступ к вашему серверу.

Обновление CentOS и установка необходимых пакетов

Первый шаг к установке Nginx на CentOS — убедиться, что ваша система обновлена ​​и у вас установлены необходимые пакеты. Вы можете обновить CentOS с помощью следующей команды:

sudo yum update

Далее вам нужно установить пакеты, необходимые для Nginx. Эти пакеты включают репозиторий EPEL, который предоставляет дополнительные пакеты для CentOS, и сам пакет Nginx. Вы можете установить эти пакеты с помощью следующей команды:

sudo yum install epel-releasesudo yum install nginx

Загрузите и установите Nginx на CentOS

После установки необходимых пакетов вы можете приступить к загрузке и установке Nginx на CentOS. Вы можете загрузить последнюю версию Nginx с официального сайта, используя следующую команду:

wget https://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.0-1.el7.ngx.x86_64.rpm

После загрузки пакета вы можете установить Nginx с помощью следующей команды:

sudo yum install nginx-1.20.0-1.el7.ngx.x86_64.rpm

Настройка блоков сервера Nginx

Теперь, когда вы установили Nginx на CentOS, пришло время настроить его для обслуживания вашего веб-сайта. Nginx использует серверные блоки для определения того, как он обрабатывает входящие запросы. По умолчанию Nginx обслуживает файлы в каталоге /usr/share/nginx/html. Вы можете создать новый серверный блок для обслуживания вашего веб-сайта, создав новый файл конфигурации в каталоге /etc/nginx/conf.d. Например, если ваш веб-сайт — example.com, вы можете создать файл конфигурации example.com.conf со следующим содержимым:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

Этот файл конфигурации определяет блок сервера, который прослушивает порт 80 для запросов к example.com. Он обслуживает файлы из каталога /var/www/example.com и использует файл index.html в качестве индексного файла по умолчанию. Блок location / определяет, как Nginx обрабатывает запросы URL, которые не соответствуют существующему файлу.

Настройка брандмауэра для Nginx на CentOS

По умолчанию CentOS поставляется с брандмауэром, который называется firewalld. Если вы хотите разрешить трафик на ваш сервер Nginx, вам нужно добавить правила в брандмауэр. Вы можете разрешить трафик на портах HTTP и HTTPS по умолчанию (80 и 443) с помощью следующих команд:

sudo firewall-cmd --zone=public --permanent --add-service=httpsudo firewall-cmd --zone=public --permanent --add-service=httpssudo firewall-cmd --reload

Это добавит правила, разрешающие трафик через порты 80 и 443, и перезагрузит брандмауэр для применения изменений.

Создание SSL-сертификатов для HTTPS-трафика

Если вы хотите обслуживать свой сайт через HTTPS, вам нужно создать сертификат SSL. Вы можете создать самоподписанный сертификат SSL для целей тестирования, используя следующие команды:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/nginx/example.com.key -out /etc/pki/nginx/example.com.crt

Это позволит создать самоподписанный SSL-сертификат, действительный в течение 365 дней, и сохранить файлы ключа и сертификата в Блок /etc/pki/nginxкаталоге.

Тестирование конфигурации Nginx и запуск сервера

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

sudo nginx -t

Если конфигурация верна, вы увидите сообщение об успешном тесте. Вы можете запустить Nginx с помощью следующей команды:

sudo systemctl start nginx

Проверить состояние Nginx можно с помощью следующей команды:

sudo systemctl status nginx

Обеспечение безопасности установки Nginx с помощью базовой аутентификации

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

sudo htpasswd -c /etc/nginx/.htpasswd exampleuser

Это создаст файл паролей с именем .htpasswd в каталоге /etc/nginx и предложит вам ввести пароль для пользователя exampleuser.

Чтобы потребовать аутентификацию для вашего веб-сайта, вы можете обновить конфигурацию блока сервера, добавив следующее содержимое:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html;
    location/{ auth_basic Restricted Content;
        auth_basic_user_file /etc/nginx/.htpasswd;
        try_files $uri $uri/ /index.html;
    }
}

Это потребует аутентификации для всех запросов на ваш сайт и использования файла паролей, который вы создали ранее.

Мониторинг сервера Nginx с помощью Prometheus и Grafana

Если вы хотите контролировать свой сервер Nginx, вы можете использовать Prometheus и Grafana для сбора и визуализации метрик. Вы можете установить Prometheus и Grafana, используя следующие команды:

sudo yum install prometheussudo yum install grafana

После установки Prometheus и Grafana вы можете настроить Nginx для экспорта метрик в Prometheus. Вы можете обновить конфигурацию блока сервера следующим содержимым:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html;
    location / { auth_basic Restricted Content;
        auth_basic_user_file /etc/nginx/.htpasswd;
        try_files $uri $uri/ /index.html;
    }
    location /metrics {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

Это позволит Nginx экспортировать метрики по URL /metrics. Затем вы можете настроить Prometheus для извлечения метрик из Nginx и Grafana для визуализации метрик.

Устранение распространенных проблем при установке Nginx на CentOS

Если у вас возникли проблемы в процессе установки, вот некоторые распространенные проблемы и их решения:

Ошибка запуска Nginx

Если при запуске Nginx вы столкнулись с ошибкой, вы можете проверить журнал ошибок, расположенный в /var/log/nginx/error.log, для получения дополнительной информации. Это может указывать на проблему с вашей конфигурацией или конфликтующими портами.

Брандмауэр блокирует трафик Nginx

Если вы не можете получить доступ к своему веб-сайту, проверьте, разрешает ли брандмауэр трафик через порты 80 и 443.

Nginx возвращает 404 Not Found

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

Nginx возвращает 502 Bad Gateway

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

Заключение: последние мысли по установке Nginx на CentOS

В этой статье мы рассмотрели, как установить Nginx на CentOS. Мы начали с проверки системных требований и обновления CentOS, прежде чем загрузить и установить Nginx. Затем мы рассмотрели, как настроить блоки сервера, настроить брандмауэр и создать SSL-сертификаты для трафика HTTPS. Мы также рассмотрели, как защитить установку с помощью базовой аутентификации и контролировать сервер с помощью Prometheus и Grafana. Наконец, мы обсудили распространенные проблемы и способы их устранения.

Written by Иван Васильков

Системный администратор и DevOps с опытом 10+ лет.