Ошибка Nginx в error.log – 111: Подключение отклонено

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

Сервер на nodejs (запускается через pm2). Всё работает отлично, пользователи не жалуются, но по какой-то причине в error.log nginx каждые 5-10 секунд появляются следующие ошибки:

2024/10/05 16:55:56 [error] 247972#247972: *42617938 connect() failed (111: Connection refused) while connecting to upstream, client: 172.68.&&&.&&&, server: &&&&&.net, request: "POST /api/banners HTTP/2.0", upstream: "http://127.0.0.1:3000/api/banners", host: "&&&&&.net", referrer: "https://&&&&&.net/mining/mining"

Я в замешательстве. Не знаю, с чем это может быть связано. У меня всё работает идеально, и у пользователей тоже. У меня нет идеи, почему возникают эти ошибки.

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

    server_name &&&&&.net www.&&&&&.net;

    return 302 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;

    server_name &&&&&.net www.&&&&&.net;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

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

Я готов предоставить всю необходимую информацию, просто помогите, пожалуйста =)

Похоже, что есть проблема с портом 3000, проверили ли вы, что порт привязан на сервере?

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

Проблема, которую вы описываете, судя по сообщениям в журнале ошибок Nginx, связана с тем, что ваш Nginx-сервер не может установить соединение с приложением Node.js, работающим на порту 3000. Сообщение об ошибке "111: Connection refused" указывает на то, что сервер не может подключиться к указанному адресу и порту.

Возможные причины и пути решения:

  1. Проверка работы Node.js приложения:

    • Убедитесь, что ваше приложение на Node.js запущено и слушает на порту 3000. Вы можете использовать команду:
      netstat -tuln | grep 3000

      Это позволит вам проверить, занят ли порт 3000 и какое приложение его использует.

  2. Настройка PM2:

    • Если вы используете PM2 для управления вашим приложением, убедитесь, что оно действительно работает и не перезапускается часто из-за ошибок. Проверьте статус вашего процесса с помощью команды:
      pm2 list

      Также вы можете посмотреть журналы вашего приложения, чтобы выявить возможные ошибки:

      pm2 logs <имя_приложения>
  3. Проверка конфигурации Nginx:

    • Убедитесь, что конфигурация Nginx правильная и что запросы на /api/banners действительно должны направляться на ваше Node.js приложение. Можно проверить это, добавив временные логи для отладки.
  4. Параллельные запросы:

    • Если ваше Node.js приложение не справляется с высокой нагрузкой или слишком большим числом параллельных соединений, это может вызывать проблемы. Рассмотрите возможность оптимизации производительности приложения или использования балансировщика нагрузки, если запросы действительно высокие.
  5. Проблемы с сетью:

    • Убедитесь, что нет сетевых проблем, которые могут мешать соединению между Nginx и вашим приложением. Это может быть связано с брандмауэром или другими сетевыми настройками.
  6. Файлы конфигурации:

    • Убедитесь, что ваш файл конфигурации Nginx корректно настроен и не содержит опечаток. Например, в вашем примере конфигурации используется proxy_pass http://localhost:3000;. Если ваше приложение запускается на другом IP или порту, измените настройку соответственно.

Проверка и отладка:

  • Попробуйте выполнить загрузочный тест на ваше приложение, чтобы увидеть, как оно реагирует на нагрузку. Используйте инструменты вроде Apache Benchmark или JMeter.
  • Проверьте, происходят ли ошибки только в определённое время, например, когда вы ожидаете пиковых нагрузок.

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

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

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