Nginx — это веб-сервер, а также обратный прокси-сервер, сервер электронной почты и прокси-сервер для передачи данных. Он был разработан Игорем Сысоевым и впервые выпущен в 2004 году. Nginx известен своей высокой производительностью, стабильностью и низким потреблением ресурсов, что делает его популярным выбором для обработки большого количества одновременных соединений.
Основные функции Nginx включают:
- Обслуживание статического контента: Nginx эффективно обрабатывает статические файлы (например, изображения, CSS и JavaScript) и может использоваться для хостинга веб-сайтов.
- Обратный прокси: Nginx может выступать в роли обратного прокси-сервера, перенаправляя запросы от клиентов к другим серверам, что позволяет распределять нагрузку и повышать отказоустойчивость.
- Балансировка нагрузки: Nginx может распределять входящий трафик между несколькими серверами, что помогает улучшить производительность и надежность приложений.
- SSL/TLS: Nginx поддерживает шифрование трафика с помощью SSL и TLS, обеспечивая безопасное соединение.
- Кэширование: Nginx может кэшировать ответы от серверов, что ускоряет время загрузки страниц и снижает нагрузку на серверы.
- Поддержка различных протоколов: Nginx поддерживает HTTP, HTTPS, HTTP/2, а также другие протоколы.
Благодаря своей гибкости и множеству возможностей, Nginx стал одним из самых популярных веб-серверов в мире и используется многими крупными веб-сайтами и приложениями.
В Fedora 40 или 39 вы можете установить Nginx с помощью встроенных в Fedora инструментов управления пакетами, которые гарантируют, что у вас будет безопасная и актуальная версия программного обеспечения. Это руководство поможет вам выполнить установку и правильно настроить Nginx в соответствии с требованиями вашего веб-сервера. Независимо от того, размещаете ли вы простой сайт или управляете сложными веб-сервисами, Nginx обеспечивает необходимую надёжность и производительность.
Обновление Fedora перед установкой Nginx
Для начала важно обновить систему Fedora. Этот шаг гарантирует, что все пакеты вашей системы обновлены, что обеспечивает бесперебойную установку NGINX.
Выполните приведенную ниже команду:
sudo dnf upgrade --refresh
Установка Nginx с помощью команды DNF
Fedora включает NGINX в свой репозиторий по умолчанию, как правило, предлагая последнюю или очень свежую версию. Такая доступность упрощает установку и последующее обслуживание.
Установите NGINX в вашей системе Fedora с помощью этой команды в терминале:
sudo dnf install nginx
Подтвердите установку Nginx
После установки NGINX рекомендуется подтвердить установку. Эта проверка поможет убедиться, что NGINX правильно настроен и работает в вашей системе.
Проверьте установленную версию NGINX, запустив:
nginx -v
На выходе должна отобразиться установленная версия NGINX, что подтвердит успешную установку.
Настройка правил брандмауэра для NGINX
Настройка параметров брандмауэра для HTTP и HTTPS
Для обработки веб-трафика NGINX требуются открытые порты. По умолчанию брандмауэр Fedora не настраивает эти правила автоматически. Чтобы NGINX мог обслуживать веб-контент, необходимо вручную добавить правила для HTTP (порт 80) и HTTPS (порт 443). Используйте следующие команды для настройки параметров брандмауэра:
Откройте HTTP-порт 80:
sudo firewall-cmd --permanent --zone=public --add-service=http
Для порта HTTPS 443:
sudo firewall-cmd --permanent --zone=public --add-service=https
Применение изменений Брандмауэра
После добавления необходимых служб примените новые правила брандмауэра, перезагрузив firewalld:
sudo firewall-cmd --reload
Это действие активирует новые настройки, благодаря чему ваша система Fedora будет готова перенаправлять трафик HTTP и HTTPS на NGINX.
Проверка состояния службы NGINX
Проверка работоспособности службы NGINX
После установки NGINX важно убедиться, что он работает корректно. Чтобы проверить состояние службы NGINX, выполните следующую команду:
systemctl status nginx
Эта команда запрашивает у системного диспетчера служб отчёт о состоянии NGINX, указывая, активна ли служба и работает ли она без сбоев.

Включение и запуск службы NGINX
Если NGINX неактивен, вам нужно запустить службу и настроить автозапуск.Чтобы запустить NGINX и настроить его автоматический запуск при загрузке системы, выполните следующую команду в терминале:
sudo systemctl enable nginx --now
Эта команда настраивает параметры службы системы, обеспечивая запуск NGINX и сохранение настроек при перезагрузке.
Тестирование конфигурации NGINX
Чтобы убедиться, что NGINX правильно настроен и работает, откройте страницу NGINX по умолчанию. Сначала определите IP-адрес вашего сервера с помощью этой команды:
curl -4 icanhazip.com
Если команда curl недоступна, установите ее с помощью:
sudo dnf install curl
После успешного выполнения вы получите вывод с IP-адресом сервера в формате XXX.XXX.XXX.XXX.
Доступ к странице NGINX по умолчанию
Используя IP-адрес сервера, вы можете перейти на главную страницу NGINX по умолчанию. Откройте веб-браузер и введите следующий URL-адрес, заменив your_server_ip на фактический IP-адрес:
http://your_server_ip
В качестве альтернативы, если вы выполняете эту проверку на локальном компьютере, где установлен NGINX, вы можете использовать:
http://localhost
Вы должны увидеть страницу приветствия NGINX по умолчанию, подтверждающую, что веб-сервер правильно установлен и обслуживает страницы.

Тестовая страница NGINX, подтверждает успешную настройку NGINX и его готовность к дальнейшей настройке и развёртыванию веб-приложений.
Настройка структуры каталогов домена для NGINX
Чтобы начать настройку хостинга для домена, например «example.com», сначала создайте необходимую структуру каталогов в /var/www/.
На протяжении всего процесса заменяйте «your_domain» на фактическое имя вашего домена.
Создание каталога домена
Создайте корневой каталог домена для размещения файлов веб-сайта. Параметр -p гарантирует, что будут созданы все необходимые родительские каталоги:
sudo mkdir -p /var/www/your_domain/html
Установка прав на каталог
После создания каталога важно установить права доступа (не забываем поменять your_domain):
sudo chown -R $USER:$USER /var/www/your_domain/html
Настройка разрешений для каталога
Теперь измените права доступа к каталогу, чтобы обеспечить безопасность и определить уровни доступа. Следующая команда устанавливает полные права доступа для владельца, а для других пользователей только права на чтение и выполнение , что является стандартной практикой для каталогов с веб-контентом:
sudo chmod -R 755 /var/www/your_domain
Хотя в некоторых конфигурациях предлагается использовать каталог /usr/share/nginx/html, для тех, кто только начинает работать с сервером, рекомендуется использовать каталог /var/www из-за его простоты и удобства .
Создание тестовой страницы HTML для теста Nginx
Создание тестовой HTML-страницы
Перейдём к созданию тестовой HTML-страницы, чтобы подтвердить работоспособность вашего сервера NGINX. Эта страница подтвердит правильность настройки вашей установки NGINX и каталогов блоков сервера.
Запустите текстовый редактор nano, чтобы приступить к созданию тестовой страницы:
nano /var/www/your_domain/html/index.html
В редакторе nano заполните файл следующей структурой HTML, заменив your_domain на своё реальное доменное имя:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
Сохранение и выход из редактора
После ввода HTML-содержимого сохраните изменения, нажав CTRL+O. Подтвердите сохранение, а затем закройте редактор, нажав CTRL+X.
Создание этой тестовой HTML-страницы — важный шаг в проверке правильности настройки вашего сервера NGINX.
Создание блока сервера Nginx
Создание структуры каталогов для серверных блоков
Начните с создания структуры каталогов, необходимой для блоков сервера NGINX. Выполните приведенные ниже команды, чтобы создать каталоги sites-available и sites-enabled, в которых будут храниться конфигурации блоков сервера:
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Настройка основного файла конфигурации NGINX
Теперь измените основной файл конфигурации NGINX, добавив блоки вашего сервера. Откройте файл nginx.conf с помощью следующей команды:
sudo nano /etc/nginx/nginx.conf
В файле закомментируйте строку, содержащую блоки серверов по умолчанию, и добавьте строку, содержащую блоки серверов из каталога sites-enabled:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
###EDIT HERE### #
# include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}
Сохраните внесенные изменения с помощью CTRL + O и завершите работу с помощью CTRL + X.
Создание файла серверного блока вашего домена
Теперь создайте файл конфигурации блока сервера для вашего домена. Замените your_domain на фактическое имя вашего домена:
sudo nano /etc/nginx/sites-available/your_domain.conf
Вставьте следующую конфигурацию, изменив директивы server_name и root в соответствии с вашим доменом и корнем документа:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain;
root /var/www/your_domain/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
После настройки конфигурации сохраните файл (CTRL+O) и выйдите (CTRL+X).
Включение Блокировки сервера Nginx
Включите серверный блок вашего домена, создав символическую ссылку на каталог с включёнными сайтами:
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
Этот шаг гарантирует, что NGINX включит ваш серверный блок во время следующей перезагрузки.
Изменение размера хэш-корзины в конфигурации NGINX
Прежде чем завершить работу, важно настроить параметр server_names_hash_bucket_size, чтобы избежать возможных проблем с конфигурацией. Снова откройте файл nginx.conf:
sudo nano /etc/nginx/nginx.conf
Убедитесь, что следующая строка раскомментирована или добавлена:
server_names_hash_bucket_size 64;
Тестирование конфигурации NGINX
Проверьте конфигурацию NGINX, чтобы избежать ошибок во время выполнения:
sudo nginx -t
Сообщение об успешном завершении будет указывать на корректную конфигурацию.
Перезапуск NGINX для применения изменений
Если проверка конфигурации прошла успешно, перезапустите NGINX, чтобы применить изменения:
sudo systemctl restart nginx
Проверка блока вашего сервера
Чтобы убедиться, что блок сервера активен, перейдите на свой домен в веб-браузере.

Если тестовая страница отображается не так, как ожидалось, проверьте, нет ли в nginx.conf блоков сервера по умолчанию, которые необходимо удалить.
Дополнительные команды для Nginx
Защита с помощью бесплатного сертификата Let’s Encrypt SSL
Установка Certbot для NGINX
Повысьте безопасность своего сервера, включив HTTPS с помощью бесплатного SSL-сертификата от Let’s Encrypt. Для начала установите программу Certbot, которая автоматизирует процесс получения сертификата:
sudo dnf install python3-certbot-nginx
Получение и установка SSL-сертификата
После установки Certbot выполните следующую команду, заменив адрес электронной почты и домен на свои данные:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
Эта команда подключает сертификат и изменяет конфигурацию NGINX, чтобы обеспечить работу HTTPS с помощью 301-редиректа, добавления заголовка Strict-Transport-Security и включения OCSP Stapling, что повышает безопасность вашего сервера.
Автоматическое обновление SSL-сертификата
Сертификаты, выданные Let’s Encrypt, действительны в течение 90 дней. Чтобы не продлевать их вручную, автоматизируйте процесс с помощью задания cron. Сначала протестируйте процесс продления:
sudo certbot renew --dry-run
Если пробный запуск прошел успешно, перейдите к редактированию вашей crontab:
sudo crontab -e
Если Cron не установлен в вашей системе Fedora, установите его с помощью:
sudo dnf install cronie
На вкладке crontab запланируйте ежедневную проверку продления сертификата:
00 00 */1 * * /usr/sbin/certbot-auto renew
Сохраните свой crontab с помощью SHIFT + :, введите wq, а затем нажмите Enter
.
Вы должны увидеть сообщение с подтверждением, указывающее на успешную настройку запланированной задачи:
crontab: installing new crontab
Управление сервисом Nginx
После успешной установки Nginx на вашем сервере важно знать о следующих командах управления:
Остановка веб-сервера NGINX
Чтобы остановить службу NGINX, выполните следующую команду:
sudo systemctl stop nginx
Запуск веб-сервера NGINX
Запустите службу NGINX с помощью этой команды:
sudo systemctl start nginx
Перезапуск веб-сервера NGINX
Для полного перезапуска службы NGINX используйте:
sudo systemctl restart nginx
Перезагрузка веб-сервера NGINX
Перезагрузить конфигурацию веб-сервера Nginx без остановки самой службы, например, для внесения изменений в конфигурационном файле:
sudo systemctl reload nginx
Отключение автозапуска NGINX при загрузке сервера
Запретить запуск NGINX во время загрузки системы:
sudo systemctl disable nginx
Включение автозапуска NGINX при загрузке сервера
Настройте автоматический запуск NGINX при загрузке, но обратите внимание, что по умолчанию он у нас уже включён при настройке:
sudo systemctl enable nginx
Эти команды необходимы для повседневного управления службой NGINX, чтобы администраторы могли эффективно контролировать работу веб-сервера в среде Fedora Linux.
Доступ к логам сервера NGINX
Переход к каталогу журналов (логам)
Для начала перейдите в каталог журналов NGINX:
cd /var/log/nginx/
Перечислите содержимое, чтобы просмотреть доступные файлы журналов:
ls
В этом каталоге access.log и error.log — это основные файлы, в которых хранятся входящие запросы сервера и сообщения об ошибках соответственно. Регулярный просмотр этих журналов крайне важен для выявления проблем, оптимизации производительности и поддержания работоспособности сервера.
Мониторинг журналов в режиме реального времени
Для оперативного мониторинга журнала есть команда “tail” :
sudo tail -f /var/log/nginx/access.log
Эта команда непрерывно выводит новые записи в логах по мере их создания, что делает её удобным инструментом для немедленного устранения неполадок.
Просмотр последних действий в журнале
Чтобы просмотреть последние записи, отобразите последние 30 строк access.log:
sudo tail -f /var/log/nginx/access.log -n 30
Расширенные методы фильтрации журналов
Для более глубокого анализа журналов можно использовать команду grep для фильтрации логов. Например, чтобы найти все записи, связанные с определённым IP-адресом, используйте:
grep 'IP_ADDRESS' /var/log/nginx/access.log
Замените IP_ADDRESS на фактический IP-адрес, который вы исследуете.
Чтобы отслеживать журналы ошибок для определенных дат, объедините grep со строкой даты:
grep '2023-11-07' /var/log/nginx/error.log
Здесь фильтруются записи за период 7 ноября 2023 года.
Для более сложного анализа есть такие инструменты, как awk. С ним можно извлекать определённые поля, например, коды ответов:
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -n
Эта последовательность выводит коды состояния HTTP из журнала access.log, подсчитывает их и сортирует, чтобы определить наиболее часто встречающиеся коды.
Настройка ротации журналов NGINX
Настройка параметров ротации журнала
Чтобы настроить ротацию журналов для NGINX, отредактируйте файл конфигурации в /etc/logrotate.d/:
sudo nano /etc/logrotate.d/nginx
Этот файл определяет архивирование, сжатие и управление ротацией журналов NGINX. По умолчанию используются сбалансированные настройки, которые можно изменить в соответствии с конкретными политиками ведения журналов или системными требованиями.
Понимание параметров конфигурации Logrotate
Вот разбивка ключевых директив в конфигурации logrotate:
- Daily, Weekly, Monthly: устанавливает интервал архивации журналов. По умолчанию используется ежедневный интервал, но его можно изменить на еженедельный или ежемесячный в зависимости от того, как часто вы хотите архивировать журналы.
- Rotate: указывает количество старых файлов журнала, которые необходимо сохранить. Значение по умолчанию — 14, то есть после 14 ротаций самый старый файл удаляется.
- Compress: включить сжатие перемещаемых файлов журнала для экономии места. По умолчанию параметр включен.
- Delaycompress: откладывает сжатие до следующего цикла ротации, обычно в сочетании с функцией сжатия.
- Missingok: позволяет logrotate продолжить работу без ошибок, если файл журнала отсутствует.
- Create: устанавливает права доступа и владельца для новых файлов журнала после ротации, обеспечивая безопасный и надлежащий доступ.
- Sharedscripts: выполняет скрипт postrotate один раз после ротации всех журналов, что эффективно для перезагрузки сервисов.
Пример конфигурации NGINX Logrotate
Ниже приведен пример конфигурации с пояснениями к каждой директиве:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Некоторые соображения:
- Настройки по умолчанию: если нет веских причин, рекомендуется использовать настройки NGINX по умолчанию.
- Система и требования: настройте параметры в соответствии с использованием системы, объёмом памяти и конкретными потребностями приложения.
- Мониторинг безопасности: если вы используете такие инструменты, как fail2ban, убедитесь, что настройки ротации журналов не мешают мониторингу логов/журналов.
Понимая и настраивая эти параметры, администраторы могут обеспечить эффективное и безопасное управление журналами NGINX в соответствии со своей политикой ведения журналов.
Обновление NGINX
Резервное копирование конфигурации NGINX
Перед запуском обновления защитите свою конфигурацию NGINX:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
Выполнение этой команды дублирует файл nginx.conf, добавляя к имени файла расширение .bak. Эта резервная копия служит страховкой, позволяющей восстановить исходные настройки, если процесс обновления повлияет на ваши пользовательские конфигурации.
Архивирование всего каталога NGINX
Для создания полной резервной копии заархивируйте весь каталог NGINX:
sudo tar -czvf nginx_backup.tar.gz /etc/nginx/
Эта команда объединяет все файлы конфигурации, модули и связанные с ними данные в сжатый архив tar, обеспечивая полную копию текущей конфигурации NGINX.
Выполнение обновления NGINX
Чтобы обновить NGINX, обновите репозитории Fedora и примените последние обновления:
sudo dnf upgrade --refresh
Эта команда проверяет наличие обновлений и, если они доступны, предложит обновиться.
Примечание: всегда проверяйте изменения перед установкой обновлений, особенно для таких критически важных служб, как NGINX, чтобы избежать непредвиденных простоев или проблем с конфигурацией.
Удаление NGINX
Чтобы удалить NGINX из вашей системы, выполните следующую команду:
sudo dnf remove nginx
Эта команда удаляет NGINX и все оставшиеся после установки зависимости, которые теперь не нужны.
Примечание: это действие остановит все службы NGINX и удалит связанные с ними файлы. Если вы планируете использовать их позже или перенести их на другой веб-сервер, убедитесь, что вы создали резервные копии всех необходимых файлов конфигурации или данных веб-сайта.
Заключение
Установив Nginx в своей системе Fedora, вы получите надёжный и эффективный веб-сервер, готовый выполнять различные задачи: от обслуживания статических файлов до управления трафиком для более сложных приложений. Регулярные обновления с помощью инструментов управления пакетами Fedora помогут обеспечить безопасность и бесперебойную работу вашей установки Nginx. Изучите возможность тонкой настройки конфигурации Nginx в соответствии с вашими потребностями, будь то оптимизация производительности, повышение безопасности или настройка расширенных функций, таких как балансировка нагрузки. При правильном управлении Nginx обеспечит высокую производительность ваших веб-проектов.