NGINX работает на порту 81, но не на 80.

Вопрос или проблема

В настоящее время я настраиваю небольшой HTTP-сервер на Debian Bookworm с использованием nginx.

Проблема в том, что когда я настраиваю его на порт 80, я получаю ошибку 404, но когда я настраиваю его на любой другой неиспользуемый порт, он работает так, как должен, например, 10000 или 81.

Вот моя конфигурация в /etc/nginx/sites-available/default (с правильной символической ссылкой в sites-enabled):

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

Проверки, которые я провел до сих пор:

  1. nginx -t проверяет файл и не сообщает об ошибках
  2. проверка правильной привязки порта с помощью sudo ss -lptn 'sport = :80', и это дает
State     Recv-Q    Send-Q       Local Address:Port        Peer Address:Port    Process
LISTEN    0         511                0.0.0.0:80               0.0.0.0:*        users:(("nginx",pid=14187,fd=5),("nginx",pid=14186,fd=5),("nginx",pid=14185,fd=5),("nginx",pid=14184,fd=5),("nginx",pid=13948,fd=5))
LISTEN    0         511                   [::]:80                  [::]:*        users:(("nginx",pid=14187,fd=9),("nginx",pid=14186,fd=9),("nginx",pid=14185,fd=9),("nginx",pid=14184,fd=9),("nginx",pid=13948,fd=9))
  1. Как уже упоминалось ранее, простая замена 80 на 81 и запуск sudo systemctl restart nginx заставляет nginx работать на порту 81… и запуск sudo ss -lptn 'sport = :80' выдает пустую таблицу.

Ответ или решение

Ваша проблема с тем, что NGINX работает на порту 81, но не на порту 80, возможно связана с несколькими факторами. Прежде чем предположить решение, важно учесть все аспекты конфигурации системы и сетевой инфраструктуры.

Анализ проблемы

  1. Права доступа и привилегии: На стандартном порту 80, который является привилегированным, обычно может слушать только процесс, запущенный от имени суперпользователя. Если NGINX не имеет соответствующих прав, он не сможет успешно обрабатывать запросы на этом порту. Вы можете воспользоваться sudo для запуска NGINX, чтобы убедиться в наличии необходимых привилегий.

  2. Другие процессы, использующие порт 80: Чтобы удостовериться, что ни один другой процесс не использует порт 80, можно выполнить команду sudo ss -lptn и проверить, относится ли какая-то другая служба к порту 80. Если это так, остановка ненужного процесса или его перенастройка на другой порт может решить проблему.

  3. Конфигурация файрвола: Иногда файервол может блокировать соединения на порту 80. Необходимо проверить настройки файрвола на вашем сервере и при необходимости, добавить правило, разрешающее трафик на порту 80 с помощью команд, таких как iptables или ufw.

  4. Конфигурации SELinux (при наличии): Если у вас включён SELinux, нужно удостовериться, что политика безопасности не блокирует доступ к порту 80. Аналогично могут потребоваться корректировки в контекстной конфигурации.

Рекомендации по решению

  • Проверка прав: Убедитесь, что служба NGINX запускается с достаточными привилегиями для использования порта 80. Используйте команду sudo nginx -t для верификации конфигурации, а sudo systemctl restart nginx — для перезапуска службы.

  • Анализ запущенных процессов: Выполните sudo ss -lptn с фильтром по порту 80, чтобы идентифицировать любые потенциальные конфликты. При необходимости освободите порт 80.

  • Настройки безопасности: Удостоверьтесь, что файервол и политики безопасности не препятствуют нормальной работе NGINX на порту 80.

  • Изучение журналов: Проанализируйте журналы ошибок NGINX (/var/log/nginx/error.log) и системные журналы для выявления указаний на конкретные проблемы, связанные с портом 80.

Учитывая, что NGINX корректно работает на других портах, вероятно, проблема сугубо в конфликтах привилегий и сетевых ограничений, указанных выше. Решите эти проблемы последовательно для достижения положительного результата.

Оцените материал
Добавить комментарий

Капча загружается...