ERR_CONNECTION_REFUSED: příčiny a jak to opravit
· 6 min čtení
Co chyba znamená
Prohlížeč našel adresu serveru, poslal požadavek na spojení na port 443 (nebo 80) a server odpověděl „ne“: reset TCP, který operační systém pošle, když na tom portu nenaslouchá žádný program. Chrome zobrazí ERR_CONNECTION_REFUSED („This site can't be reached“), Firefox „Unable to connect“, Safari „Safari can't connect to the server“.
Liší se to od vypršení časového limitu (nic neodpovídá vůbec, obvykle firewall, který zahazuje pakety, nebo vypnutý server) a od DNS_PROBE_FINISHED_NXDOMAIN (jméno se nepřeloží). Odmítnuté spojení znamená: stroj běží a je dosažitelný, ale webový server na něm neběží, naslouchá na jiném portu nebo adrese, nebo je blokován firewallem, který odmítá místo zahazování.
Časté příčiny
- Webový server je zastaven. nginx nebo Apache spadl, po změně konfigurace se nespustil, nebo byl zastaven aktualizací. Zdaleka nejčastější příčina.
- Webový server naslouchá na špatné adrese nebo portu. Po změně direktiv
listense nginx naváže jen na127.0.0.1nebo jen na IPv4, zatímco záznam DNS míří na adresu IPv6. - Firewall port odmítá.
ufw,firewalldnebo bezpečnostní skupina v cloudu s pravidlemrejectpro 80/443, často poté, co někdo server „zabezpečil“. - Nový server bez webového serveru. Záznam DNS už míří na novou IP, ale nginx není nainstalován nebo ještě není spuštěn.
- HTTPS není nastaveno. Port 80 funguje, port 443 nemá žádný posluchač a prohlížeč (nebo záznam HSTS) trvá na HTTPS.
- Místní příčiny na straně návštěvníka. Nastavení proxy mířící na mrtvou proxy, VPN, „webový štít“ antiviru, záznam v souboru hosts nebo rozšíření prohlížeče.
Pokud jste návštěvník
- Zkuste web v anonymním okně a v jiném prohlížeči, což vyloučí rozšíření a cache.
- Zkontrolujte nastavení proxy: Windows „Proxy settings“, macOS Network > Advanced > Proxies. Vypněte ruční proxy, kterou nepoužíváte.
- Na chvíli vypněte VPN a webovou ochranu antiviru.
- Vymažte DNS (
ipconfig /flushdns,sudo dscacheutil -flushcache) pro případ, že vaše cache drží starou adresu webu, který se přesunul. - Zkuste jednou
http://místohttps://; pokud to funguje, HTTPS webu je rozbité a majitel to musí opravit.
Pokud jde o váš web: nejdřív zkontrolujte
Spusťte kontrolu dostupnosti webu. „Connection refused“ zvenčí potvrzuje, že odmítá samotný server. Pak se přihlaste přes SSH (SSH, které funguje, zatímco web odmítá, je samo silným náznakem: server běží, webový server ne).
# is the web server running?
systemctl status nginx
systemctl status apache2
# what is listening on 80 and 443?
sudo ss -tlnp | grep -E ':80 |:443 '
# firewall rules
sudo ufw status verbose
sudo firewall-cmd --list-all
sudo nft list ruleset | grep -E 'dport (80|443)'
Pokud ss na 443 nic neukazuje, webový server neběží nebo pro něj není nakonfigurován. Pokud ukazuje 127.0.0.1:443 místo 0.0.0.0:443 nebo *:443, naslouchá jen lokálně.
Opravy na vlastním serveru
1. Spusťte webový server a přečtěte si, proč se zastavil
sudo systemctl start nginx
systemctl status nginx
sudo journalctl -u nginx -n 50
Pokud se nespustí, důvody jsou téměř vždy jedním z těchto:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use): port drží jiný program (nainstalován Apache i nginx, nebo zastaralý proces).sudo ss -tlnp | grep :80ho pojmenuje; zastavte ten, který nechcete.[emerg] unknown directivenebounexpected "}": syntaktická chyba v konfiguračním souboru.sudo nginx -tvypíše soubor a řádek.cannot load certificate: soubor certifikátu byl smazán nebo obnoven do jiné cesty. Porovnejte řádkyssl_certificates tím, co je na disku.Too many open filesnebo plný disk:df -h,df -i.
Apache: sudo apachectl configtest, pak sudo journalctl -u apache2 -n 50. Platí stejné kategorie; AH00558 (could not determine server name) je jen varování, ne příčina.
Vždy testujte před reloadem a pokud je to možné, dělejte reload místo restartu:
sudo nginx -t && sudo systemctl reload nginx
sudo apachectl configtest && sudo systemctl reload apache2
2. Naslouchejte na správné adrese
V bloku server v nginx jsou pro IPv4 i IPv6 potřeba obě tyto sady:
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
Pokud DNS má záznam AAAA, ale server nenaslouchá na IPv6 (nebo nemá připojení IPv6), návštěvníci na IPv6 dostanou odmítnuté spojení, zatímco všichni ostatní jsou v pořádku. Buď ho přimějte naslouchat, nebo záznam AAAA odstraňte.
3. Otevřete firewall
# ufw (Debian/Ubuntu)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# firewalld (RHEL family)
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
Na cloudovém serveru zkontrolujte také bezpečnostní skupinu poskytovatele nebo síťový firewall v ovládacím panelu; pravidlo tam není zevnitř serveru vidět.
4. Nastavte HTTPS, pokud odpovídá jen port 80
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot přidá blok server pro 443 a přesměrování. Pak pomocí kontroly SSL ověřte, že je řetězec úplný.
5. Po přesunu serveru
Ujistěte se, že webový server na novém stroji je nainstalován, nakonfigurován pro doménu a spuštěn, než změníte DNS. Pokud jste ho už změnili: nainstalujte a spusťte ho hned, nebo nasměrujte záznam zpět na starý server, dokud nebude nový připraven.
Když je to problém poskytovatele hostingu
Na sdíleném hostingu odmítnuté spojení znamená, že webový server poskytovatele je pro váš uzel mimo provoz, nebo vás přesunuli na novou IP bez aktualizace DNS. Pošlete:
Dobrý den, můj web example.com vrací „connection refused“ na portech 80 a 443 přibližně od 20:15 UTC. Doména se překládá na 203.0.113.10. V účtu jsem nic neměnil. Je webový server na tom stroji mimo provoz, nebo se můj web přesunul na jinou adresu?
Jak předejít dalšímu
Odmítnuté spojení je téměř vždy zastavený webový server a zastavená služba je přesně to, čeho si kontrola portu a kontrola webu zvenčí všimne do minuty. Na vlastním serveru vás serverový agent upozorní, když se nginx nebo Apache zastaví, a Quick Fix ho za pevnou cenu restartuje po úspěšném testu konfigurace, aniž by se někdo ve 3 ráno musel přihlašovat. Pokud je rozbitá samotná konfigurace, opraví ji Deep Fix.
Co dál
Zkontrolujte to zvenčí
Nejede web pro všechny, nebo jen pro vás, a co server odpovídá? Zdarma, bez registrace.
Kontrola dostupnosti webuVýpadek? Zasáhneme.
Na vlastním serveru nebo ve webhostingu s přístupem přes SSH: Quick Fix za pevnou cenu pro běžné příčiny, Deep Fix účtovaný po 15minutových blocích pro zbytek, nonstop. Cena před objednáním.
Nechat opravitDalší průvodci
- Váš web nejede. Co dělat v prvních 15 minutách.
- Server nejede: co zkontrolovat jako první a v jakém pořadí
- 502 Bad Gateway: příčiny a jak to opravit
- 503 Service Unavailable: přetížení, nebo údržba?
- 504 Gateway Timeout: co znamená a jak to opravit
- DNS_PROBE_FINISHED_NXDOMAIN: příčiny a opravy
- „Vaše připojení není soukromé“: varování o SSL certifikátu