Server Refused to Connect означает, что браузер или приложение попытались подключиться к серверу, но сервер отклонил соединение. Обычно это происходит, когда нужный порт закрыт, веб-сервер не запущен, firewall блокирует доступ или сайт неправильно настроен.
Ошибка может появляться в Chrome, Firefox, Safari, cURL, приложениях, панелях хостинга и при подключении к API.
Quick Fix
- Проверьте, работает ли сайт с другого устройства или сети.
- Перезапустите роутер и очистите кэш браузера.
- Если вы владелец сайта, проверьте статус веб-сервера:
sudo systemctl status nginxилиsudo systemctl status apache2 - Проверьте, открыт ли нужный порт:
sudo ss -tulpn - Для HTTPS проверьте порт 443:
sudo ss -tulpn | grep :443 - Для HTTP проверьте порт 80:
sudo ss -tulpn | grep :80 - Проверьте firewall:
sudo ufw status - Проверьте DNS-записи домена.
- Если сайт за Cloudflare, проверьте DNS, SSL/TLS mode и firewall rules.
Что значит Server Refused to Connect
Server Refused to Connect означает, что соединение до сервера дошло, но сервер не принял его. Это отличается от ошибки таймаута. При таймауте сервер не отвечает. При отказе в подключении сервер или сеть активно отклоняет запрос.
В браузере это может выглядеть так:
This site can’t be reachedexample.com refused to connectERR_CONNECTION_REFUSEDConnection refusedFailed to connect to servercurl: (7) Failed to connect
На практике ошибка часто означает одно из двух: веб-сервер не слушает нужный порт или доступ к нему заблокирован.
Основные причины Server Refused to Connect
1. Веб-сервер не запущен
Если Nginx, Apache или другой веб-сервер остановлен, сайт не сможет принимать подключения. Это одна из самых частых причин ошибки.
Проверьте Nginx:
sudo systemctl status nginx
Проверьте Apache:
sudo systemctl status apache2
На CentOS, AlmaLinux или Rocky Linux Apache может называться httpd:
sudo systemctl status httpd
2. Порт 80 или 443 закрыт
Для обычного HTTP используется порт 80. Для HTTPS используется порт 443. Если эти порты закрыты, браузер не сможет подключиться к сайту.
Проверьте порт 80:
sudo ss -tulpn | grep :80
Проверьте порт 443:
sudo ss -tulpn | grep :443
Если команда ничего не показывает, значит сервер не слушает этот порт.
3. Firewall блокирует подключение
Firewall может блокировать входящие подключения даже тогда, когда веб-сервер работает правильно.
На Ubuntu/Debian проверьте UFW:
sudo ufw status
Откройте HTTP и HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
Если используется Nginx:
sudo ufw allow 'Nginx Full'
Если используется Apache:
sudo ufw allow 'Apache Full'
4. Порт заблокирован в панели VPS или хостинга
Некоторые провайдеры имеют отдельный firewall в панели управления. Даже если порт открыт внутри Linux, он может быть закрыт на уровне облачной сети.
Проверьте в панели хостинга разделы:
- Firewall;
- Security Groups;
- Network Rules;
- Cloud Firewall;
- Inbound Rules;
- Access Rules.
Для сайта должны быть разрешены входящие подключения:
TCP 80
TCP 443
5. Apache или Nginx настроен неправильно
Если в конфигурации веб-сервера нет правильного server block или VirtualHost, сайт может отказываться принимать соединения.
Для Nginx проверьте конфигурацию:
sudo nginx -t
Для Apache:
sudo apachectl configtest
Если есть ошибка, сервер обычно покажет файл и строку, где находится проблема.
6. Сайт слушает только localhost
Иногда сервис настроен так, что слушает только 127.0.0.1. В таком случае он доступен внутри сервера, но недоступен извне.
Проверьте:
sudo ss -tulpn
Если вы видите:
127.0.0.1:80
127.0.0.1:443
то внешние пользователи не смогут подключиться. Для публичного сайта сервер должен слушать:
0.0.0.0:80
0.0.0.0:443
или IPv6:
[::]:80
[::]:443
7. DNS указывает на неправильный IP
Если домен направлен на старый или неправильный сервер, пользователь будет подключаться не туда. На нужном сервере всё может быть настроено правильно, но ошибка всё равно будет появляться.
Проверьте A-запись:
dig example.com A
Проверьте AAAA-запись:
dig example.com AAAA
Если IPv6-запись AAAA указывает на сервер, где сайт не настроен, часть пользователей может видеть ошибку подключения.
8. SSL или HTTPS настроены неправильно
Если ошибка появляется только на HTTPS, проблема может быть в SSL-блоке, сертификате или порте 443.
Проверьте:
- открыт ли порт 443;
- есть ли SSL-сертификат;
- правильно ли указан путь к
fullchain.pem; - правильно ли указан путь к
privkey.pem; - есть ли
listen 443 ssl;в Nginx; - есть ли
<VirtualHost *:443>в Apache.
9. Cloudflare не может подключиться к origin-серверу
Если сайт работает через Cloudflare, ошибка может быть связана с origin-сервером. Cloudflare должен иметь возможность подключиться к вашему серверу по HTTP или HTTPS.
Проверьте:
- правильный IP в DNS-записи Cloudflare;
- открыты ли порты 80 и 443 на сервере;
- не блокирует ли firewall IP-адреса Cloudflare;
- правильно ли выбран SSL/TLS mode;
- работает ли сайт напрямую без Cloudflare.
10. Сервис или приложение упало
Если ошибка появляется не на сайте, а в приложении, API, Docker-контейнере или панели управления, причина может быть в остановленном сервисе.
Проверьте список процессов:
sudo systemctl --failed
И активные порты:
sudo ss -tulpn
Как исправить Server Refused to Connect
1. Проверьте сайт с другой сети
Сначала убедитесь, что проблема не только у вас. Откройте сайт:
- с мобильного интернета;
- с другого браузера;
- с другого устройства;
- через VPN;
- из другой страны, если возможно.
Если сайт не открывается только у вас, проблема может быть в локальной сети, DNS-кэше, VPN, антивирусе или настройках браузера.
2. Очистите кэш браузера и DNS
Для обычного пользователя это быстрый шаг. Иногда браузер или система держит старый IP-адрес сайта.
На Windows откройте Command Prompt и выполните:
ipconfig /flushdns
На macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
В Chrome можно открыть:
chrome://net-internals/#dns
И очистить DNS-кэш.
3. Проверьте статус веб-сервера
Если вы владелец сайта, подключитесь к серверу по SSH.
Для Nginx:
sudo systemctl status nginx
Если сервер остановлен, запустите его:
sudo systemctl restart nginx
Для Apache:
sudo systemctl status apache2
sudo systemctl restart apache2
Если используется httpd:
sudo systemctl status httpd
sudo systemctl restart httpd
4. Проверьте конфигурацию Nginx или Apache
Если веб-сервер не запускается, проверьте конфигурацию.
Nginx:
sudo nginx -t
Apache:
sudo apachectl configtest
Если есть ошибка, не перезапускайте сервер вслепую. Откройте файл, который указан в сообщении, исправьте строку и снова выполните тест.
5. Откройте порты 80 и 443
Для Ubuntu/Debian с UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status
Для CentOS/AlmaLinux/Rocky Linux с firewalld:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
6. Проверьте, кто слушает нужный порт
Выполните:
sudo ss -tulpn | grep -E ':80|:443'
Если порт 80 или 443 слушает не тот сервис, может быть конфликт.
Например, если Nginx занимает 443, Apache не сможет использовать этот порт. В таком случае нужно выбрать одну схему:
- только Nginx;
- только Apache;
- Nginx как reverse proxy перед Apache.
7. Проверьте DNS домена
Убедитесь, что домен указывает на правильный IP сервера.
dig example.com A
dig www.example.com A
Если используется IPv6:
dig example.com AAAA
Если AAAA-запись неправильная, удалите её или настройте сайт на IPv6-сервере.
8. Проверьте SSL-конфигурацию
Для Nginx в HTTPS-блоке должно быть:
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Для Apache:
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
После проверки:
sudo nginx -t
sudo systemctl reload nginx
Или для Apache:
sudo apachectl configtest
sudo systemctl reload apache2
9. Проверьте Cloudflare
Если домен подключён к Cloudflare, временно переключите DNS-запись с оранжевого облака на серое. Так вы проверите сайт напрямую.
Проверьте:
- DNS-запись A указывает на правильный IP;
- SSL/TLS mode стоит Full или Full (strict);
- на сервере установлен SSL-сертификат;
- firewall не блокирует Cloudflare;
- порт 443 открыт на origin-сервере.
Если после отключения прокси Cloudflare сайт тоже не открывается, проблема почти точно на сервере или в DNS.
10. Посмотрите логи
Логи часто показывают реальную причину быстрее, чем догадки.
Nginx:
sudo tail -n 100 /var/log/nginx/error.log
Apache:
sudo tail -n 100 /var/log/apache2/error.log
Systemd:
sudo journalctl -xe
Для конкретной службы:
sudo journalctl -xeu nginx
sudo journalctl -xeu apache2
Advanced Troubleshooting
Connection refused только на HTTPS
Если HTTP работает, а HTTPS нет, почти всегда проблема в порте 443 или SSL-конфигурации.
Проверьте:
sudo ss -tulpn | grep :443
sudo ufw status
sudo nginx -t
Для Apache:
sudo apachectl configtest
Если порт 443 не слушается, добавьте HTTPS-блок в Nginx или VirtualHost в Apache.
Connection refused только на HTTP
Если HTTPS работает, а HTTP нет, возможно, порт 80 закрыт или нет редиректа с HTTP на HTTPS.
Проверьте:
sudo ss -tulpn | grep :80
sudo ufw allow 80/tcp
Для Nginx добавьте редирект:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Connection refused после миграции сайта
После переноса сайта часто остаются старые DNS-записи. Также новый сервер может не иметь открытых портов или SSL.
Проверьте:
- A-запись домена;
- AAAA-запись;
- открыты ли 80 и 443;
- запущен ли веб-сервер;
- выпущен ли SSL для нового сервера;
- не остался ли старый IP в Cloudflare.
Connection refused в Docker
Если сайт или приложение работает в Docker, проверьте публикацию портов.
docker ps
В колонке PORTS должно быть что-то вроде:
0.0.0.0:80->80/tcp
0.0.0.0:443->443/tcp
Если порт не опубликован, контейнер может работать, но снаружи подключение будет отклонено.
Connection refused в API
Если ошибка возникает при подключении к API, проверьте:
- правильный URL;
- правильный порт;
- работает ли backend-сервис;
- разрешён ли внешний доступ;
- не слушает ли API только
localhost; - не блокирует ли firewall внешний IP.
Чем Server Refused to Connect отличается от Timeout
Эти ошибки похожи, но причина разная.
| Ошибка | Что означает | Частая причина |
|---|---|---|
| Server Refused to Connect | Сервер отклонил подключение | Порт закрыт, сервис не слушает, firewall отклоняет |
| Connection Timed Out | Сервер не ответил вовремя | Сеть недоступна, firewall молча блокирует, сервер завис |
| DNS_PROBE_FINISHED_NXDOMAIN | Домен не найден | Ошибка DNS или домен не существует |
| SSL Error | Проблема с защищённым соединением | Сертификат, HTTPS-конфигурация, Cloudflare |
Как предотвратить Server Refused to Connect
- Включите автозапуск веб-сервера:
sudo systemctl enable nginxилиsudo systemctl enable apache2. - Всегда проверяйте конфигурацию перед перезапуском.
- Держите порты 80 и 443 открытыми.
- Проверяйте firewall после установки VPS.
- Не оставляйте неправильные AAAA-записи.
- Следите за SSL-сертификатами.
- Не включайте Cloudflare, пока сайт не работает напрямую.
- После миграции проверяйте DNS и IP сервера.
- Настройте мониторинг доступности сайта.
Когда обращаться в поддержку хостинга
Обратитесь в поддержку, если:
- у вас нет SSH-доступа;
- сайт работает в панели хостинга, но не открывается снаружи;
- порт 80 или 443 закрыт на уровне провайдера;
- вы не можете изменить firewall;
- после миграции домен указывает на правильный IP, но сайт не открывается;
- сервер не запускает Apache или Nginx после перезагрузки;
- Cloudflare показывает 522, 525 или 526.
Перед обращением подготовьте домен, IP сервера, скрин ошибки и результаты команд:
sudo systemctl status nginx
sudo systemctl status apache2
sudo ss -tulpn | grep -E ':80|:443'
sudo ufw status
FAQ
Что значит Server Refused to Connect?
Это значит, что сервер отклонил попытку подключения. Обычно причина в закрытом порте, остановленном веб-сервере, firewall, неправильном DNS или ошибке конфигурации.
Как исправить ERR_CONNECTION_REFUSED?
Проверьте, запущен ли веб-сервер, слушает ли он порт 80 или 443, открыт ли порт в firewall и правильно ли домен указывает на IP сервера.
Почему сайт отказывается подключаться только по HTTPS?
Скорее всего, закрыт порт 443, отсутствует HTTPS-конфигурация или неправильно установлен SSL-сертификат.
Может ли Cloudflare вызвать Server Refused to Connect?
Да. Если Cloudflare направляет трафик на неправильный IP, origin-сервер закрывает порт 443 или firewall блокирует Cloudflare, сайт может не открываться.
Почему localhost работает, а сайт снаружи нет?
Сервис может слушать только 127.0.0.1, а не публичный IP. Также внешний доступ может блокировать firewall или правила VPS-провайдера.
Вывод
Server Refused to Connect чаще всего связан не с браузером, а с сервером. Проверьте, запущен ли Apache или Nginx, открыт ли порт 80/443, правильно ли настроен firewall, DNS, SSL и Cloudflare.
Лучший порядок действий: сначала проверить статус веб-сервера, затем порты, firewall, DNS и логи. Так вы быстро поймёте, где именно сервер отказывается принимать подключение.
