Обратный прокси-сервер Nginx случайным образом выдает ошибку «Уже прослушиваются порты 80 и 443»

1
6

Я настроил nginx как обратный прокси для своего приложения с LetsEncrypt в качестве SSL. Все идет гладко, но иногда nginx внезапно падает с сообщением об ошибке:

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

service nginx restart - все восстанавливается и работает.

Моя дикая догадка заключается в том, что это может быть letsencrypt, который заставляет его сбоить случайным образом. У меня очень простая конфигурация прохода прокси nginx с настройками letsencrypt (certbot), добавленными certbot.

В настоящее время у меня есть Web status checker, который уведомляет меня, когда он падает, и я вручную перезапускаю его, но это раздражает, и я не понимаю, что вызывает это.

Already bind with port 80/443
Станимир
Вопрос задан9 мая 2024 г.

1 Ответ

2

Ошибки “Уже прослушиваются порты 80 и 443” при использовании Nginx в качестве обратного прокси-сервера, возникают, когда другой процесс или служба уже используют эти порты. Обычно это происходит по следующим причинам:

  • Другой веб-сервер: На той же машине уже запущен другой веб-сервер, например, Apache или самостоятельный Nginx (может быть установлен по умолчанию).
  • Другая служба: На той же машине может быть запущена другая служба, которая использует порты 80 или 443, например, firewall, VPN, сервис прослушивания других протоколов.
  • Конфликт с Nginx: Возможно, у вас уже запущен Nginx, но конфигурация не позволяет ему прослушивать эти порты (например, указаны неправильные параметры в конфигурационном файле  nginx.conf).

Как устранить ошибку:

  1. Определите процесс, использующий порт:Используйте утилиту  netstat (в Linux/macOS) или netstat (в Windows) для определения процесса, который использует порты 80 и 443. Например, в Linux:

    sudo netstat -a -p | grep ":80"
    sudo netstat -a -p | grep ":443"
    
  2. Остановите конфликтный процесс: Если вы определили конфликтный процесс, остановите его. Вы можете использовать утилиту  systemctl (в Linux) или taskkill (в Windows).

  3. Измените конфигурацию Nginx: Если конфликт связан с Nginx, измените его конфигурацию, чтобы он прослушивал другие порты. Откройте файл  nginx.conf и измените параметры  listen для серверов.

    # Вместо  listen  80  используйте  listen  8080
    server {
        listen 8080;
        ...
    }
    
    # Вместо  listen  443  используйте  listen  8443
    server {
        listen 8443 ssl;
        ...
    }
    
  4. Перезапустите Nginx: После изменения конфигурации перезапустите Nginx с помощью команды  systemctl restart nginx (в Linux) или  nginx -s reload (в Windows).

  5. Используйте другие порты: Если невозможно остановить конфликтный процесс, используйте другие порты для Nginx. Например, используйте порт 8080 для HTTP и 8443 для HTTPS.

Важно: Перед изменением конфигурации Nginx и остановкой процессов убедитесь, что вы имеете права доступа и понимаете риски изменения системных настроек. Если вы не уверены в своих действиях, обратитесь к специалисту.

Надеюсь, эта информация поможет вам устранить ошибку “Уже прослушиваются порты 80 и 443” и настроить Nginx в качестве обратного прокси-сервера.

 

Ирина
Ответ получен11 сентября 2024 г.

Ваш ответ

Загрузить файл.