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

Nginx –один из самых популярных веб-серверов в мире, он может обслуживать очень большие сайты с высоким трафиком, как правило, расходуя при этом меньше ресурсов, чем Apache. Также его можно использовать в качестве обратного прокси-сервера.

Данный мануал поможет установить Nginx на сервер CentOS 8.

Требования

Для работы нужен сервер CentOS 8, настроенный по этому мануалу.

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

Пакет Nginx можно установить с помощью dnf, нового стандартного пакетного менеджера CentOS 8.

Чтобы установить Nginx, введите эту команду:

sudo dnf install nginx

Чтобы подтвердить установку, введите y. После этого dnf установит Nginx и все его зависимости на ваш сервер.

После завершения установки вам нужно добавить веб-сервер в автозагрузку и запустить его:

sudo systemctl enable nginx
sudo systemctl start nginx

2: Настройка брандмауэра

Прежде чем запустить Nginx, нужно настроить брандмауэр firewalld для поддержки его трафика через порт 80.

Чтобы на постоянной основе активировать соединения HTTP по порту 80, введите эту команду:

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

Чтобы убедиться в том, что брандмауэр пропускает трафик http, запустите:

sudo firewall-cmd --permanent --list-all

Вы увидите такой вывод, если все работает правильно:

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/\/.*$//'

Команда вернёт несколько строк. Проверьте каждый полученный адрес в браузере.

В качестве альтернативы вы можете проверить, как ваш сервер видят другие точки в интернете. Для этого используйте команду:

curl -4 icanhazip.com

Узнав свой IP-адрес, введите его в браузер, чтобы убедиться, что веб-сервер работает должным образом.

http://your_server_ip

На экране должна появиться стандартная страница Nginx:

Welcome to nginx on Red Hat Enterprise Linux!
This page is used to test the proper operation of the nginx HTTP server after it has been installed […]

Если вы видите такую страницу, ваш веб-сервер работает правильно.

4: Управление процессами Nginx

Теперь давайте рассмотрим несколько основных команд для управления веб-сервером.

Чтобы остановить Nginx, введите:

sudo systemctl stop nginx

Чтобы запустить веб-сервер, введите:

sudo systemctl start nginx

Для перезапуска используйте эту команду:

sudo systemctl restart nginx

Чтобы обновить настройки Nginx, не сбрасывая соединения, используйте команду:

sudo systemctl reload nginx

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

sudo systemctl disable nginx

Чтобы возобновить автозапуск сервиса, введите:

sudo systemctl enable nginx

5: Важные файлы и каталоги Nginx

Теперь вы знаете, как управлять сервисом. Давайте рассмотрим важные файлы и каталоги веб-сервера Nginx.

Контент:

  • /usr/share/nginx/html: содержит текущий контент сайта. По умолчанию в нём находится только стандартная посадочная страница, которую вы уже видели. Этот каталог можно изменить в конфигурационном файле Nginx.

Настройки сервера:

  • /etc/nginx: каталог настроек nginx, в котором хранятся все конфигурационные файлы.
  • /etc/nginx/nginx.conf: главный конфигурационный файл Nginx, содержащий глобальные настройки веб-сервера.
  • /etc/nginx/conf.d/: каталог для хранения виртуальных хостов, которые в контексте Nginx называются блоками server. Как правило, они нужны для того, чтобы обслуживать разные домены в рамках одного сервера. Обычно имя файла виртуального хоста совпадает с доменом сайта, для которого он предназначен (по формату your_domain.conf).

Логи сервера:

  • /var/log/nginx/access.log: регистрирует все запросы, полученные веб-сервером Nginx (если не настроено другое поведение).
  • /var/log/nginx/error.log: хранит все сообщения об ошибках Nginx.

6: Настройка виртуального хоста (опционально)

На веб-сервере Nginx можно использовать виртуальные хосты (также они называются блоками server) для размещения нескольких доменов на одном сервере и изоляции их настроек.

Примечание: Здесь мы используем условный домен your_domain, а вы должны заменить его собственным доменом.

В CentOS 8 файлы блоков server хранятся в каталоге /etc/nginx/conf.d в формате .conf. В этой системе Nginx по умолчанию обслуживает документы из каталога /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. Он очень мощный, но новичкам с ним бывает трудно работать. При желании вы можете установить редактор nano, он немного проще:

sudo dnf install nano

Теперь с его помощью создайте файл index.html:

nano /var/www/your_domain/html/index.html

Вставьте в файл такой 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>

Сохраните и закройте файл (нажмите Ctrl+X, Y, а затем Enter).

Чтобы Nginx смог обслуживать этот контент, необходимо создать файл виртуального хоста с правильным набором директив. Мы не будем изменять конфигурации по умолчанию напрямую, вместо этого мы создадим  новый файл /etc/nginx/conf.d/your_domain.conf:

sudo nano /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;
}
}

Сохраните и закройте файл.

Читайте также: Алгоритмы выбора блоков server и location в Nginx

Проверьте ошибки в конфигурационных файлах Nginx:

sudo nginx -t

Если ошибок нет, вы увидите такой вывод:

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, иначе веб-сервер не сможет обслуживать контент из каталога /var/www/your_domain.

Читайте также: Введение в SELinux в CentOS 7: базовые понятия

Следующая команда включит обслуживание вашего пользовательского файла document root в качестве контента HTTP:

chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

Теперь Nginx обслуживает домен вашего сайта. Чтобы убедиться в этом, откройте ссылку http://your_domain в браузере.

Success! Your Nginx server is successfully configured for your_domain.
This is a sample page.

Эта страница обслуживает HTML-код из файла пользовательской страницы, которую обслуживает наш новый блок server. Если вы видите в браузере эту фразу, Nginx правильно обслуживает ваш домен.

Заключение

Теперь веб-сервер Nginx установлен и готов к работе. Используйте его для обслуживания контента вашего сайта. Также теперь вы можете установить более сложный программный стек для поддержки сайта.

Читайте также: Установка стека LEMP в CentOS 8

Tags: , , , ,