Введение

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

В этом руководстве мы расскажем, как выполнить установку Nginx на сервере CentOS 8.

Предварительные требования

nginx illustration for: Предварительные требования

Для выполнения этого обучающего руководства вам потребуется доступ к серверу CentOS 8, пользователь без прав root с привилегиями sudo и и активный брандмауэр, установленный на сервере. Чтобы выполнить настройку, воспользуйтесь руководством по начальной настройке сервера CentOS 8.

Шаг 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

				
			

Вывод будет выглядеть следующим образом:

				
					
[secondary_label 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-адрес вашего сервера или его доменное имя с помощью вашего веб-браузера.

Примечание: если вы используете the cloud provider в качестве вашего провайдера хостинга DNS, вы можете изучить нашу документацию для продукта для получения подробных инструкций по настройке нового доменного имени и указать ваш сервер.

Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный 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.

Мы создадим серверный блок для домена с именем your_domain. Чтобы узнать больше о настройке доменного имени с помощью the cloud provider, пройдите наше обучающее руководство Введение в DNS hosting.

По умолчанию 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:

				
					
[label /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, а затем ENTER“““.

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

				
					
sudo nano /etc/nginx/conf.d/&lt;^&gt;your_domain.conf&lt;^&gt;

				
			

Вставьте следующий блок конфигурации:

				
					
[label /etc/nginx/conf.d/your_domain.conf]

server {

 listen 80;

 listen [::]:80;



 root /var/www/&lt;^&gt;your_domain&lt;^&gt;/html;

 index index.html index.htm index.nginx-debian.html;



 server_name &lt;^&gt;your_domain&lt;^&gt; www.&lt;^&gt;your_domain&lt;^&gt;;



 location / {

 try_files $uri $uri/ =404;

 }

}

				
			

Сохраните и закройте файл после внесения изменений в его содержимое.

Чтобы убедиться, что в файлах Nginx нет синтаксических ошибок, запустите следующую команду:

				
					
sudo nginx -t

				
			

Если проблем нет, вы увидите на экране следующие результаты:

				
					
[secondary_label 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/&lt;^&gt;your_domain&lt;^&gt;/

				
			

Теперь вы можете проверить настройку вашего пользовательского домена, перейдя на http://<^>your_domain<^>, где вы увидите примерно следующее:

Эта страница отображает код HTML, который мы задали в корневой директории документов, созданной для серверного блока. Если вы увидите эту страницу, это означает, что ваш сервер Nginx настроен корректно для обслуживания вашего домена.

Заключение

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

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