Коротко. ERR_CONNECTION_REFUSED — это активный отказ TCP-соединения: ваш браузер дошёл до сервера, но на нужном проверку портов (80 или 443) никто не слушает или firewall отбросил пакет. Чаще всего виноват упавший веб-сервер, неверный порт или блокировка на стороне хостинга. Первый шаг — проверить, открыт ли порт командой curl -I -v https://example.com и доступен ли хост через ping.
Что значит ошибка ERR_CONNECTION_REFUSED
В отличие от таймаута, при «refused» сервер отвечает мгновенно — но отвечает отказом. На уровне TCP это означает, что в ответ на SYN-пакет пришёл RST. Так бывает, когда процесс веб-сервера (nginx, Apache, Node.js) не запущен, слушает другой порт, либо firewall настроен на DROP/REJECT.
«Connection refused» — это сигнал, что сеть до сервера работает. Проблема не в маршруте, а в том, что на конце никто не принимает соединение.
Основные причины
- Веб-сервер не запущен — упал nginx/Apache, контейнер остановился.
- Неверный порт — сервис слушает 8080, а вы стучитесь на 80/443.
- Firewall блокирует порт — iptables, ufw, security group облака.
- Локальный прокси или VPN перехватывает и отклоняет запрос.
- Битый кэш браузера или DNS ведёт на старый/неверный IP.
Диагностика на стороне пользователя
Сначала отделите проблему браузера от проблемы сети. Проверьте доступность хоста и порта:
ping example.com
curl -I -v https://example.com
# Проверка конкретного порта (Linux/macOS)
nc -zv example.com 443
Очистите DNS-кэш и кэш браузера:
# Windows
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Исправление на стороне пользователя
- Откройте сайт в режиме инкогнито или другом браузере.
- Отключите VPN, прокси и расширения, блокирующие трафик.
- Очистите кэш браузера и сбросьте DNS-кэш (команды выше).
- Перезагрузите роутер и проверьте файл
hostsна лишние записи. - Попробуйте мобильный интернет — это исключит проблему вашей сети.
Исправление на стороне сервера
Если ошибку видят все пользователи — проблема на сервере. Проверьте, запущен ли сервис и слушает ли он порт:
# Запущен ли nginx и какие порты слушает
sudo systemctl status nginx
sudo ss -tlnp | grep -E ':80|:443'
# Открыт ли порт в firewall
sudo ufw status
Причины и решения
| Причина | Решение |
|---|---|
| Веб-сервер упал | Перезапустить: systemctl restart nginx |
| Неверный порт | Привести конфиг к 80/443, проверить listen |
| Firewall блокирует | Открыть порт: ufw allow 443/tcp |
| Прокси/VPN на клиенте | Отключить или настроить исключение |
| Старый IP в кэше | Очистить DNS-кэш браузера и ОС |
Как предотвратить повторение
Разовый отказ можно поймать и устранить вручную, но повторяющиеся падения сервера заметит только мониторинг сайтов. Настройте аптайм-проверку, которая стучится на ваш порт каждые несколько минут и шлёт алерт в Telegram, Slack, email или вебхук до того, как пожалуются пользователи. Мультирегиональная проверка (RU/EU/US) покажет, локальная это проблема или глобальная.
Проверьте доступность сайта и HTTP-заголовки прямо сейчас, а ping и проверка портов покажут, открыт ли нужный порт. Подробнее о настройке непрерывного контроля — в руководстве по мониторингу сайтов.
Частые вопросы
Чем ERR_CONNECTION_REFUSED отличается от таймаута?
При refused сервер активно отвергает соединение (RST), при таймауте — молчит и пакеты теряются. Refused обычно решается быстрее: сервис либо не запущен, либо порт закрыт.
Это проблема у меня или у сайта?
Проверьте сайт с мобильного интернета и другого устройства. Если везде отказ — проблема на сервере. Если только у вас — смотрите VPN, прокси, firewall и DNS-кэш.
Поможет ли перезагрузка роутера?
Иногда да — если роутер закэшировал старый IP или завис NAT. Но если порт реально закрыт на сервере, перезагрузка клиента не поможет.
Как быстро узнать, что сервер снова упал?
Поставьте аптайм-мониторинг с проверкой каждые 1–5 минут и алертами. Бесплатный тариф enterno.io даёт 10 мониторов и проверку раз в 5 минут.