ERR_CONNECTION_REFUSED: syyt ja korjaus
· 5 min lukuaika
Mitä virhe tarkoittaa
Selain löysi palvelimen osoitteen, lähetti yhteyspyynnön porttiin 443 (tai 80), ja palvelin vastasi ”ei”: TCP-nollaus, jonka käyttöjärjestelmä lähettää, kun mikään ohjelma ei kuuntele kyseistä porttia. Chrome näyttää ERR_CONNECTION_REFUSED (”Sivustoon ei saada yhteyttä”), Firefox ”Yhteyden muodostaminen ei onnistu”, Safari ”Safari ei voi muodostaa yhteyttä palvelimeen”.
Tämä eroaa aikakatkaisusta (mikään ei vastaa lainkaan, yleensä palomuuri, joka pudottaa paketteja, tai sammutettu palvelin) ja DNS_PROBE_FINISHED_NXDOMAINista (nimi ei selviä osoitteeksi). Evätty yhteys tarkoittaa: kone on pystyssä ja tavoitettavissa, mutta sen verkkopalvelin ei ole käynnissä, kuuntelee toista porttia tai osoitetta tai palomuuri estää sen hylkäämällä pudottamisen sijaan.
Yleiset syyt
- Verkkopalvelin on pysäytetty. nginx tai Apache kaatui, ei käynnistynyt asetusmuutoksen jälkeen tai päivitys pysäytti sen. Ylivoimaisesti yleisin syy.
- Verkkopalvelin kuuntelee väärää osoitetta tai porttia.
listen-direktiivien muutoksen jälkeen nginx sitoutuu vain osoitteeseen127.0.0.1tai vain IPv4:ään, vaikka DNS-tietue osoittaa IPv6-osoitteeseen. - Palomuuri hylkää portin.
ufw,firewalldtai pilven tietoturvaryhmä, jossa onreject-sääntö porteille 80/443, usein sen jälkeen, kun joku ”koventi” palvelimen. - Uusi palvelin ilman verkkopalvelinta. DNS-tietue osoittaa jo uuteen IP-osoitteeseen, mutta nginxiä ei ole asennettu tai käynnistetty vielä.
- HTTPS:ää ei ole otettu käyttöön. Portti 80 toimii, portilla 443 ei ole kuuntelijaa, ja selain (tai HSTS-merkintä) vaatii HTTPS:ää.
- Paikalliset syyt kävijän päässä. Välityspalvelinasetus, joka osoittaa kuolleeseen välityspalvelimeen, VPN, virustorjunnan ”web shield”, hosts-tiedoston merkintä tai selainlaajennus.
Jos olet kävijä
- Kokeile sivustoa yksityisessä ikkunassa ja toisella selaimella, mikä sulkee pois laajennukset ja välimuistin.
- Tarkista välityspalvelinasetukset: Windowsin ”Välityspalvelimen asetukset”, macOS Verkko > Lisäasetukset > Välityspalvelimet. Poista käytöstä manuaalinen välityspalvelin, jota et käytä.
- Kytke VPN ja virustorjunnan verkkosuojaus hetkeksi pois.
- Tyhjennä DNS (
ipconfig /flushdns,sudo dscacheutil -flushcache), jos välimuistissasi on siirtyneen sivuston vanha osoite. - Kokeile kerran
http://https://:n sijaan; jos se toimii, sivuston HTTPS on rikki ja omistajan on korjattava se.
Jos kyse on sinun sivustostasi: tarkista ensin
Aja sivuston saatavuuden tarkistin. ”Connection refused” ulkoa vahvistaa, että palvelin itse kieltäytyy. Kirjaudu sitten SSH:lla (SSH toimii, vaikka verkkosivusto kieltäytyy, on jo itsessään vahva vihje: palvelin on pystyssä, verkkopalvelin ei).
# onko verkkopalvelin käynnissä?
systemctl status nginx
systemctl status apache2
# mikä kuuntelee portteja 80 ja 443?
sudo ss -tlnp | grep -E ':80 |:443 '
# palomuurisäännöt
sudo ufw status verbose
sudo firewall-cmd --list-all
sudo nft list ruleset | grep -E 'dport (80|443)'
Jos ss ei näytä mitään portilla 443, verkkopalvelin on alhaalla tai sitä ei ole määritetty sille. Jos se näyttää 127.0.0.1:443 eikä 0.0.0.0:443 tai *:443, se kuuntelee vain paikallisesti.
Korjaukset omalla palvelimella
1. Käynnistä verkkopalvelin ja lue, miksi se pysähtyi
sudo systemctl start nginx
systemctl status nginx
sudo journalctl -u nginx -n 50
Jos se ei käynnisty, syyt ovat lähes aina jokin näistä:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use): jokin toinen ohjelma pitää porttia (Apache ja nginx molemmat asennettuina tai vanhentunut prosessi).sudo ss -tlnp | grep :80nimeää sen; pysäytä se, jota et halua.[emerg] unknown directivetaiunexpected "}": syntaksivirhe asetustiedostossa.sudo nginx -ttulostaa tiedoston ja rivin.cannot load certificate: varmennetiedosto poistettiin tai uusittiin eri polkuun. Vertaassl_certificate-rivejä siihen, mitä levyllä on.Too many open filestai täysi levy:df -h,df -i.
Apache: sudo apachectl configtest ja sitten sudo journalctl -u apache2 -n 50. Samat luokat pätevät; AH00558 (palvelimen nimeä ei voitu määrittää) on vain varoitus, ei syy.
Testaa aina ennen uudelleenlatausta ja lataa uudelleen käynnistämisen sijaan, kun mahdollista:
sudo nginx -t && sudo systemctl reload nginx
sudo apachectl configtest && sudo systemctl reload apache2
2. Kuuntele oikeaa osoitetta
nginxin server-lohkossa molemmat näistä tarvitaan IPv4:lle ja IPv6:lle:
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
Jos DNS:ssä on AAAA-tietue mutta palvelin ei kuuntele IPv6:ta (tai sillä ei ole IPv6-yhteyttä), IPv6:lla olevat kävijät saavat evätyn yhteyden, vaikka kaikilla muilla on kaikki hyvin. Joko ota IPv6-kuuntelu käyttöön tai poista AAAA-tietue.
3. Avaa palomuuri
# ufw (Debian/Ubuntu)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# firewalld (RHEL-perhe)
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
Pilvipalvelimella tarkista myös palveluntarjoajan tietoturvaryhmä tai verkon palomuuri hallintapaneelissa; sääntö siellä ei näy palvelimen sisältä.
4. Ota HTTPS käyttöön, jos vain portti 80 vastaa
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot lisää 443-server-lohkon ja uudelleenohjauksen. Tarkista sitten SSL-tarkistimella, että ketju on täydellinen.
5. Palvelimen siirron jälkeen
Varmista, että uuden koneen verkkopalvelin on asennettu, määritetty verkkotunnukselle ja käynnistetty ennen kuin vaihdat DNS:n. Jos olet jo vaihtanut: asenna ja käynnistä se nyt tai osoita tietue takaisin vanhalle palvelimelle, kunnes uusi on valmis.
Kun ongelma on palveluntarjoajan
Jaetussa hostingissa evätty yhteys tarkoittaa, että palveluntarjoajan verkkopalvelin on alhaalla solmullesi tai että sinut siirrettiin uuteen IP-osoitteeseen päivittämättä DNS:ää. Lähetä:
Hei, verkkosivustoni example.com on palauttanut ”connection refused” porteissa 80 ja 443 noin klo 20.15 UTC alkaen. Verkkotunnus selviää osoitteeksi 203.0.113.10. En ole muuttanut mitään tililläni. Onko kyseisen koneen verkkopalvelin alhaalla vai onko sivustoni siirretty toiseen osoitteeseen?
Seuraavan ehkäiseminen
Evätty yhteys on lähes aina pysähtynyt verkkopalvelin, ja pysähtynyt palvelu on juuri se, minkä ulkoa tehtävä porttitarkistus ja verkkosivutarkistus havaitsevat minuutissa. Omalla palvelimellasi palvelinagentti hälyttää, kun nginx tai Apache pysähtyy, ja Quick Fix käynnistää sen uudelleen, kun sen asetustesti on läpäisty, kiinteään hintaan, ilman että kenenkään tarvitsee kirjautua sisään kolmelta yöllä. Jos itse asetukset ovat rikki, Deep Fix korjaa ne.
Mitä seuraavaksi
Tarkista se ulkoa
Onko sivusto alhaalla kaikille vai vain sinulle, ja mitä palvelin vastaa? Ilmainen, ei rekisteröitymistä.
Sivuston saatavuuden tarkistinAlhaalla? Hoidamme sen.
Omalla palvelimellasi tai webtilassa, johon on SSH-pääsy: Quick Fix kiinteään hintaan yleisiin syihin, Deep Fix 15 minuutin jaksoissa laskutettuna loppuun, kellon ympäri. Hinta ennen tilausta.
Tilaa korjausLisää oppaita
- Verkkosivustosi on alhaalla. Näin toimit ensimmäisten 15 minuutin aikana.
- Palvelin alhaalla: mitä tarkistaa ensin ja missä järjestyksessä
- 502 Bad Gateway: syyt ja korjaus
- 503 Service Unavailable: ylikuormitus vai huolto?
- 504 Gateway Timeout: mitä se tarkoittaa ja miten sen korjaa
- DNS_PROBE_FINISHED_NXDOMAIN: syyt ja korjaukset
- ”Yhteytesi ei ole yksityinen”: SSL-varmenteen varoitus