Как установить Nginx на Fedora 40 или 39

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

Основные функции Nginx включают:

  1. Обслуживание статического контента: Nginx эффективно обрабатывает статические файлы (например, изображения, CSS и JavaScript) и может использоваться для хостинга веб-сайтов.
  2. Обратный прокси: Nginx может выступать в роли обратного прокси-сервера, перенаправляя запросы от клиентов к другим серверам, что позволяет распределять нагрузку и повышать отказоустойчивость.
  3. Балансировка нагрузки: Nginx может распределять входящий трафик между несколькими серверами, что помогает улучшить производительность и надежность приложений.
  4. SSL/TLS: Nginx поддерживает шифрование трафика с помощью SSL и TLS, обеспечивая безопасное соединение.
  5. Кэширование: Nginx может кэшировать ответы от серверов, что ускоряет время загрузки страниц и снижает нагрузку на серверы.
  6. Поддержка различных протоколов: 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 в Fedora Linux.
Подтверждение рабочего состояния службы Nginx с помощью systemctl в Fedora Linux.

Включение и запуск службы 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 сигнализирует о правильной настройке Fedora.

Тестовая страница 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 в Fedora
Визуальное подтверждение того, что пользовательская HTML-страница работает на сервере Nginx в Fedora.

Если тестовая страница отображается не так, как ожидалось, проверьте, нет ли в 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 обеспечит высокую производительность ваших веб-проектов.