Ошибка "111: Connection refused" в Nginx указывает на то, что Nginx не смог установить соединение с upstream-сервером (в вашем случае, это Node.js приложение, работающее на порту 3000). Эта проблема может возникнуть по нескольким причинам:
1. **Node.js приложение не запущено**: Убедитесь, что ваше приложение действительно работает и слушает на порту 3000. Вы можете это проверить, выполнив команду `pm2 list` для просмотра состояния процессов, управляемых PM2.
2. **Приложение не слушает на `127.0.0.1`:** Если ваше Node.js приложение настроено на прослушивание не на `localhost` или `127.0.0.1`, а, например, на `0.0.0.0`, Nginx не сможет к нему подключиться по адресу `127.0.0.1:3000`. Проверьте конфигурацию вашего приложения и убедитесь, что оно слушает на правильном адресе.
3. **Приложение завершает работу и перезапускается**: Если приложение быстро завершается (например, из-за ошибок в коде), Nginx будет пытаться подключиться к нему каждый раз, когда приходит новый запрос, и будет выдавать ошибку при каждом неудачном подключении. Проверьте логи вашего приложения (например, через PM2: `pm2 logs <your-app-name>`), чтобы увидеть, есть ли какие-либо ошибки.
4. **Сетевые проблемы или ограничения**: Убедитесь, что между Nginx и вашим приложением нет сетевых проблем. Проверьте настройки брандмауэра или SELinux, если он включен, чтобы убедиться, что они не блокируют соединения.
5. **Ошибки в конфигурации Nginx**: Убедитесь, что конфигурация Nginx корректно указана. Ниже приведен пример конфигурации, который вы предоставили, и он выглядит нормально. Однако всегда стоит проверить на наличие синтаксических ошибок.
Вот несколько дополнительных рекомендаций:
- Проверьте логи вашего Node.js приложения, чтобы удостовериться, что оно загружается успешно и нет критических ошибок.
- Попробуйте запустить ваше приложение в режиме отладки, если это возможно, чтобы увидеть, не возникают ли ошибки при инициализации.
- Если у вас есть другие сервисы или прокси, попробуйте временно отключить их, чтобы диагностировать проблему.
Если проблема сохраняется после проверки всех этих моментов, попробуйте собрать дополнительную информацию о конфигурации вашего Node.js приложения и текущих системных ресурсах (например, с помощью `top` или `htop`).