Nginx — это один из самых популярных в мире веб-серверов, который обеспечивает работу целого ряда крупнейших сайтов в Интернете с огромным трафиком. Обычно он использует ресурсы эффективнее, чем Apache, и может использоваться как веб-сервер или обратный прокси-сервер.
Шаг 1 — Установка веб-сервера Nginx
Для установки Nginx мы будем использовать менеджер пакетов dnf
, который представляет собой новый доступный по умолчанию менеджер пакетов в CentOS 8.
Установите пакет nginx
с помощью следующей команды:
$ sudo dnf install nginx
При получении запроса введите y
для подтверждения того, что вы хотите установить nginx
. После этого dnf
выполнит установку dnf и любых требуемых зависимостей на ваш сервер.
После завершения установки воспользуйтесь следующей командой, чтобы активировать и запустить сервер:
$ sudo systemctl enable nginx
$ sudo systemctl start nginx
Это позволит запускать Nginx во время загрузки системы.
Шаг 2 — Настройка правил брандмауэра
Если вы активировали брандмауэр firewalld
согласно требованиям нашего руководства по первоначальной настройке для CentOS 8, вам потребуется изменить настройки брандмауэра, чтобы разрешить внешние подключения к вашему веб-серверу Nginx, который запускается на порту 80
по умолчанию.
Запустите следующую команду, чтобы на постоянной основе активировать соединения HTTP для порта 80
:
$ sudo firewall-cmd --permanent --add-service=http
Чтобы подтвердить, что служба брандмауэра http
добавлена надлежащим образом, вы можете запустить следующую команду:
$ sudo firewall-cmd --permanent --list-all
Вывод будет выглядеть следующим образом:
Output
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Для применения изменений вам необходимо перезагрузить службу брандмауэра:
$ sudo firewall-cmd --reload
Теперь сервер Nginx полностью установлен и доступен для внешних посетителей.
Шаг 3 — Проверка веб-сервера
Теперь вы можете проверить, работает ли ваш веб-сервер, выполнив попытку перехода на публичный IP-адрес вашего сервера или его доменное имя с помощью вашего веб-браузера.
Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный IP-адрес вашего сервера, вы можете найти его, введя следующую команду:
$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.
Также вы можете проверить доступность IP-адреса из других мест в интернете:
$ curl -4 icanhazip.com
Введите полученный адрес в браузере, после чего вы попадете на страницу Nginx по умолчанию:
Если вы увидите эту страницу, это значит, что ваш веб-сервер установлен корректно.
Шаг 4 — Управление процессом Nginx
Теперь, когда у вас есть работающий и запущенный веб-сервер, мы рассмотрим процесс управления службой Nginx с помощью systemctl
.
Если вам потребуется остановить работу веб-сервера, вы можете использовать следующую команду:
$ sudo systemctl stop nginx
Чтобы запустить остановленный веб-сервер, введите:
$ sudo systemctl start nginx
Чтобы остановить и перезапустить службу еще раз, вы можете использовать следующую команду:
$ sudo systemctl restart nginx
Nginx также может перегрузить изменения конфигурации без отключения подключений. Для этого введите:
$ sudo systemctl reload nginx
По умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Если вам это не нужно, вы можете отключить такое поведение с помощью следующей команды:
$ sudo systemctl disable nginx
Чтобы снова активировать эту службу и активировать запуск Nginx во время загрузки, воспользуйтесь следующей командой:
$ sudo systemctl enable nginx
Шаг 5 — Знакомство с важными файлами и директориями Nginx
Теперь, когда вы научились управлять службой Nginx, настало время познакомиться с несколькими важными директориями и файлами.
Контент
/usr/share/nginx/html
: реальный веб-контент, в состав которого по умолчанию входит только показанная ранее страница Nginx по умолчанию, выводится из директории/usr/share/nginx/html
. Это можно изменить путем изменения файлов конфигурации Nginx.
Конфигурация сервера
/etc/nginx
: директория конфигурации Nginx. Здесь хранятся все файлы конфигурации Nginx./etc/nginx/nginx.conf
: основной файл конфигурации Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx./etc/nginx/conf.d/
: эта директория содержит файлы конфигурации для блока сервера, где вы можете определить веб-сайты, которые размещены в Nginx. Типичный подход — размещение каждого сайта в отдельном файле, название которого совпадает с доменным именем сайта, например,your_domain.conf
.
Журналы сервера
/var/log/nginx/access.log
: каждый запрос к вашему веб-серверу регистрируется в этом файле журнала, если Nginx не настроен иначе./var/log/nginx/error.log
: любые ошибки Nginx будут регистрироваться в этом журнале.
Шаг 6 — Настройка блоков сервера (опция)
Если вы хотите разместить несколько сайтов на одном и том же веб-сервере Nginx, вам придется создать блоки сервера. Блоки сервера Nginx работают аналогичным с виртуальными хостами Apache образом, позволяя одному серверу реагировать на запросы к нескольким доменным именам и предоставлять разное содержимое для каждого домена. В CentOS 8 серверные блоки определяются в файлах .conf
, расположенных в /etc/nginx/conf.d
.
По умолчанию Nginx на CentOS 8 настроен для предоставления документов из директории в /usr/share/nginx/html
. Хотя это хорошо работает для отдельного сайта, при размещении нескольких сайтов это может стать очень неудобно. Вместо изменения /usr/share/nginx/html
мы создадим внутри /var/www структуру директорий для нашего сайта your_domain, оставив /usr/share/nginx/html
“**** в качестве директорию по умолчанию для вывода в случае, если запросу клиента не соответствуют никакие другие сайты.
Создайте директорию для your_domain следующим образом, используя флаг -p
для создания необходимых родительских каталогов:
$ sudo mkdir -p /var/www/your_domain/html
Затем необходимо назначить права владения для директории с помощью переменной среды $USER,
которая будет использоваться для текущего системного пользователя:
$ sudo chown -R $USER:$USER /var/www/your_domain/html
Затем мы создадим образец страницы index.html
для тестирования конфигурации блока сервера. Предоставляемый с CentOS 8 по умолчанию текстовый редактор — vi
. vi
очень мощный текстовый редактор, но освоить работу с ним неопытным пользователям достаточно сложно. Вы можете установить более удобный для пользователя редактор, например, nano
, для облегчения редактирования файлов конфигурации на сервере CentOS 8:
$ sudo dnf install nano
Теперь вы можете использовать nano
для создания файла index.html:
$ nano /var/www/your_domain/html/index.html
В этом файле добавьте следующий код HTML:
/var/www/your_domain/html/index.html
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
Сохраните файл и закройте его после завершения. Если вы используете nano, вы можете сделать это, нажав CTRL + X, Y
.
Чтобы Nginx обслуживал это содержимое, нам нужно создать серверный блок с правильными директивами, которые указывают на наш настраиваемый корневой каталог. Мы создадим новый серверный блок в /etc/nginx/conf.d/your_domain.conf
:
$ sudo nano /etc/nginx/conf.d/your_domain.conf
Вставьте следующий блок конфигурации:
/etc/nginx/conf.d/your_domain.conf
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Сохраните и закройте файл после внесения изменений в его содержимое.
Чтобы убедиться, что в файлах Nginx нет синтаксических ошибок, запустите следующую команду:
$ sudo nginx -t
Если проблем нет, вы увидите на экране следующие результаты:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
После тестирования конфигурации перезапустите Nginx для активации изменений:
$ sudo systemctl restart nginx
Прежде чем вы сможете проверить изменения в браузере, вам нужно будет обновить контексты безопасности SELinux вашего сервера, чтобы позволить Nginx обслуживать содержание из директории /var/www/your_domain
.
Следующая команда позволит использовать ваш настраиваемый корневой каталог документов в качестве содержимого HTTP:
$ chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Теперь вы можете проверить настройку вашего пользовательского домена, перейдя на http://your_domain
, где вы увидите примерно следующее:
Эта страница отображает код HTML, который мы задали в корневой директории документов, созданной для серверного блока. Если вы увидите эту страницу, это означает, что ваш сервер Nginx настроен корректно для обслуживания вашего домена.