Установка последней версии Nginx в Centos 8

Nginx [engine x] — это HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения.
Для начала обновляем систему
1
|
# sudo dnf update
|
Создаем файл для yum-репозитория Nginx:
1
|
# sudo touch /etc/yum.repos.d/nginx.repo
|
Есть 2 версии nginx. Stable version (Стабильная) и Mainline version (Основная). Основная версия — это последняя версия nginx с новыми функционалом. Стабильная версия — это версия, которая нацелена на стабильность и безопасность. Новый функционал не добавляется.
В файл nginx.repo прописываем и сохраняем файл:
1
|
# sudo vi /etc/yum.repos.d/nginx.repo
|
Стабильная версия:
1
2
3
4
5
6
7
|
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/8/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
|
Основная версия:
1
2
3
4
5
6
7
|
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/8/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
|
Можно прописать в файл все два репозитория. Тогда по умолчанию будет использоваться стабильная версия. Если нужна основная версия, тогда ее нужно указать программе dnf, что бы она использовала репозиторий основной версии.
Потом указываем репозиторий прописав:
1
|
# sudo dnf config-manager --set-enabled nginx-mainline
|
И сама установка nginx прописываем в терминале команду:
1
|
# sudo dnf install nginx
|
Теперь на нужно запустить nginx. Для этого прописываем:
1
|
# sudo systemctl start nginx
|
Для того, что бы nginx сам запускался после перезагрузки прописываем:
1
|
# sudo systemctl enable nginx
|
На этом установка Nginx закончена.
Содержимое
Настройка правил брандмауэра
Если вы активировали брандмауэр
Запустите следующую команду, чтобы на постоянной основе активировать соединения HTTP для порта
1
|
# sudo firewall-cmd --permanent --add-service=http
|
Чтобы подтвердить, что служба брандмауэра
1
|
sudo firewall-cmd --permanent --list-all
|
Вывод будет выглядеть следующим образом:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Outputpublic
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:
|
Для применения изменений вам необходимо перезагрузить службу брандмауэра:
1
|
# sudo firewall-cmd --reload
|
Теперь сервер Nginx полностью установлен и доступен для внешних посетителей.
Проверка веб-сервера
Теперь вы можете проверить, работает ли ваш веб-сервер, выполнив попытку перехода на публичный IP-адрес вашего сервера или его доменное имя с помощью вашего веб-браузера.
Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный IP-адрес вашего сервера, вы можете найти его, введя следующую команду:
1
|
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
|
Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.
Также вы можете проверить доступность IP-адреса из других мест в интернете:
1
|
curl -4 https://darksf.ru
|
Введите полученный адрес в браузере, после чего вы попадете на страницу Nginx по умолчанию:
1
2
3
4
5
|
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
|
Если вы увидите эту страницу, это значит, что ваш веб-сервер установлен корректно.
Управление процессом Nginx
Теперь, когда у вас есть работающий и запущенный веб-сервер, мы рассмотрим процесс управления службой Nginx с помощью
Если вам потребуется остановить работу веб-сервера, вы можете использовать следующую команду:
1
|
# sudo systemctl stop nginx
|
Чтобы запустить остановленный веб-сервер, введите:
1
|
# sudo systemctl start nginx
|
Чтобы остановить и перезапустить службу еще раз, вы можете использовать следующую команду:
1
|
# sudo systemctl restart nginx
|
Nginx также может перегрузить изменения конфигурации без отключения подключений. Для этого введите:
1
|
# sudo systemctl reload nginx
|
По умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Если вам это не нужно, вы можете отключить такое поведение с помощью следующей команды:
1
|
# sudo systemctl disable nginx
|
Чтобы снова активировать эту службу и активировать запуск Nginx во время загрузки, воспользуйтесь следующей командой:
1
|
# sudo systemctl enable nginx
|
Знакомство с важными файлами и директориями 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 будут регистрироваться в этом журнале.
Настройка блоков сервера (опция)
Если вы хотите разместить несколько сайтов на одном и том же веб-сервере Nginx, вам придется создать блоки сервера. Блоки сервера Nginx работают аналогичным с виртуальными хостами Apache образом, позволяя одному серверу реагировать на запросы к нескольким доменным именам и предоставлять разное содержимое для каждого домена. В CentOS 8 серверные блоки определяются в файлах
Мы создадим серверный блок для домена с именем your_domain.
По умолчанию Nginx на CentOS 8 настроен для предоставления документов из директории в
Создайте директорию для your_domain следующим образом, используя флаг
1
|
# sudo mkdir -p /var/www/your_domain/html
|
Затем необходимо назначить права владения для директории с помощью переменной среды
1
|
# sudo chown -R $USER:$USER /var/www/your_domain/html
|
Затем мы создадим образец страницы
1
|
# sudo dnf install nano
|
Теперь вы можете использовать
1
|
nano /var/www/your_domain/html/index.html
|
В этом файле добавьте следующий код HTML:/var/www/your_domain/html/index.html
1
2
3
4
5
6
7
8
9
|
<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 обслуживал это содержимое, нам нужно создать серверный блок с правильными директивами, которые указывают на наш настраиваемый корневой каталог. Мы создадим новый серверный блок в
1
|
# sudo nano /etc/nginx/conf.d/your_domain.conf
|
Вставьте следующий блок конфигурации:/etc/nginx/conf.d/your_domain.conf
1
2
3
4
5
6
7
8
9
10
|
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 нет синтаксических ошибок, запустите следующую команду:
1
|
# sudo nginx -t
|
Если проблем нет, вы увидите на экране следующие результаты:
1
2
|
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
|
После тестирования конфигурации перезапустите Nginx для активации изменений:
1
|
# sudo systemctl restart nginx
|
Прежде чем вы сможете проверить изменения в браузере, вам нужно будет обновить контексты безопасности SELinux вашего сервера, чтобы позволить Nginx обслуживать содержание из директории
Следующая команда позволит использовать ваш настраиваемый корневой каталог документов в качестве содержимого HTTP:
1
|
chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
|
Теперь вы можете проверить настройку вашего пользовательского домена, перейдя на
Эта страница отображает код HTML, который мы задали в корневой директории документов, созданной для серверного блока. Если вы увидите эту страницу, это означает, что ваш сервер Nginx настроен корректно для обслуживания вашего домена.
Заключение
В этом руководстве мы узнали, как выполнить установку и настройку Nginx, веб-сервер с высокой производительностью и обратным прокси. Мы изучили управление службой Nginx, запущенной на вашем сервере, и узнали, где Nginx хранит файлы конфигурации, содержимое и логи.
Теперь у вас есть множество вариантов для типа контента и технологий, которые можно использовать на веб-сайтах, размещенных на вашем веб-сервере.