ERR_CONNECTION_REFUSED: причини и как да я поправите
· 2 мин. четене
Какво означава грешката
Браузърът е намерил адреса на сървъра, изпратил е заявка за връзка към порт 443 (или 80) и сървърът е отговорил „не“: TCP reset, който операционната система праща, когато никоя програма не слуша на този порт. Chrome показва ERR_CONNECTION_REFUSED („Този сайт не може да бъде достигнат“), Firefox „Не може да се установи връзка“, Safari „Safari не може да се свърже със сървъра“.
Това е различно от таймаут (изобщо нищо не отговаря, обикновено защитна стена, която губи пакети, или изключен сървър) и от DNS_PROBE_FINISHED_NXDOMAIN (името не се разрешава). Отказана връзка означава: машината работи и е достъпна, но уеб сървърът на нея не работи, слуша на друг порт или адрес или е блокиран от защитна стена, която отхвърля, вместо да губи пакетите.
Чести причини
- Уеб сървърът е спрян. nginx или Apache е забил, не е успял да стартира след промяна на конфигурацията или е бил спрян от актуализация. Най-честата причина с голяма разлика.
- Уеб сървърът слуша на грешен адрес или порт. След промяна на директивите
listennginx се свързва само към127.0.0.1или само към IPv4, докато DNS записът сочи към IPv6 адрес. - Защитна стена отхвърля порта.
ufw,firewalldили облачна група за сигурност с правилоrejectза 80/443, често след като някой е „заякчил“ сървъра. - Нов сървър без уеб сървър. DNS записът вече сочи към новия IP, но nginx още не е инсталиран или стартиран.
- HTTPS не е настроен. Портът 80 работи, портът 443 няма слушател, а браузърът (или запис HSTS) настоява за HTTPS.
- Локални причини от страна на посетителя. Настройка на прокси, сочеща към мъртво прокси, VPN, „уеб щит“ на антивирусен софтуер, запис във файла hosts или разширение на браузъра.
Ако сте посетител
- Опитайте сайта в частен прозорец и с друг браузър, което изключва разширенията и кеша.
- Проверете настройките на прокси: Windows „Proxy settings“, macOS Network > Advanced > Proxies. Изключете ръчно прокси, което не ползвате.
- Изключете за момент VPN и уеб защитата на антивирусния софтуер.
- Изчистете DNS (
ipconfig /flushdns,sudo dscacheutil -flushcache), в случай че кешът Ви държи стар адрес на сайт, който се е преместил. - Опитайте веднъж с
http://вместоhttps://; ако това работи, HTTPS на сайта е повреден и собственикът трябва да го поправи.
Ако е Вашият сайт: проверете първо
Пуснете проверката дали сайтът не работи. „Connection refused“ отвън потвърждава, че самият сървър отказва. После влезте по SSH (SSH, който работи, докато сайтът отказва, е сам по себе си силен намек: сървърът работи, уеб сървърът не).
# 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)'
Ако ss не показва нищо на 443, уеб сървърът не работи или не е конфигуриран за него. Ако показва 127.0.0.1:443 вместо 0.0.0.0:443 или *:443, той слуша само локално.
Поправки на Вашия собствен сървър
1. Стартирайте уеб сървъра и прочетете защо е спрял
sudo systemctl start nginx
systemctl status nginx
sudo journalctl -u nginx -n 50
Ако не успее да стартира, причините са почти винаги една от тези:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use): друга програма държи порта (Apache и nginx са инсталирани и двата или остарял процес).sudo ss -tlnp | grep :80я назовава; спрете тази, която не искате.[emerg] unknown directiveилиunexpected "}": синтактична грешка в конфигурационен файл.sudo nginx -tотпечатва файла и реда.cannot load certificate: файл на сертификат е бил изтрит или подновен в друг път. Сверете редоветеssl_certificateс това, което е на диска.Too many open filesили пълен диск:df -h,df -i.
Apache: sudo apachectl configtest, после sudo journalctl -u apache2 -n 50. Важат същите категории; AH00558 (не може да се определи име на сървър) е само предупреждение, не причината.
Винаги тествайте, преди да презаредите, и презареждайте, вместо да рестартирате, когато е възможно:
sudo nginx -t && sudo systemctl reload nginx
sudo apachectl configtest && sudo systemctl reload apache2
2. Слушайте на правилния адрес
В server блока на nginx и двете са нужни за IPv4 и IPv6:
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
Ако DNS има AAAA запис, но сървърът не слуша на IPv6 (или няма IPv6 свързаност), посетителите по IPv6 получават отказана връзка, докато всички останали са наред. Или го накарайте да слуша, или премахнете AAAA записа.
3. Отворете защитната стена
# 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
На облачен сървър проверете и групата за сигурност или мрежовата защитна стена на доставчика в контролния панел; правило там е невидимо отвътре на сървъра.
4. Настройте HTTPS, ако отговаря само порт 80
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot добавя server блока за 443 и пренасочването. После проверете със SSL проверката дали веригата е пълна.
5. След преместване на сървър
Уверете се, че уеб сървърът на новата машина е инсталиран, конфигуриран за домейна и стартиран, преди да смените DNS. Ако вече сте го сменили: инсталирайте и стартирайте го сега или насочете записа обратно към стария сървър, докато новият е готов.
Когато е проблем на Вашия хостинг
При споделен хостинг отказана връзка означава, че уеб сървърът на хостинга не работи за Вашия възел или са Ви преместили на нов IP без да обновят DNS. Изпратете:
Здравейте, сайтът ми example.com връща „connection refused“ на портове 80 и 443 от около 20:15 UTC. Домейнът се разрешава до 203.0.113.10. Не съм променял нищо в акаунта си. Уеб сървърът на тази машина ли не работи, или сайтът ми е преместен на друг адрес?
Как да предотвратите следващата
Отказаната връзка е почти винаги спрян уеб сървър, а спряна услуга е точно това, което проверка на порт и проверка на сайта отвън забелязват за минута. На Ваш собствен сървър сървърният агент Ви известява, когато nginx или Apache спре, а Quick Fix го рестартира, след като тестът на конфигурацията е успешен, на фиксирана цена, без някой да влиза в 3 през нощта. Ако самата конфигурация е повредена, Deep Fix я поправя.
Какво сега
Проверете отвън
Сайтът не работи за всички или само за Вас и какво отговаря сървърът? Безплатно, без регистрация.
Проверка дали сайтът не работиСрив? Намесваме се.
На Ваш собствен сървър или в уеб пространство със SSH достъп: Quick Fix на фиксирана цена за честите причини, Deep Fix, таксуван на блокове от 15 минути, за останалото, денонощно. Цената е известна преди поръчката.
Поръчайте поправкаОще ръководства
- Сайтът Ви не работи. Ето какво да направите през първите 15 минути.
- Сървърът не работи: какво да проверите първо и в какъв ред
- 502 Bad Gateway: причини и как да я поправите
- 503 Service Unavailable: претоварване или поддръжка?
- 504 Gateway Timeout: какво означава и как да я поправите
- DNS_PROBE_FINISHED_NXDOMAIN: причини и поправки
- „Връзката Ви не е поверителна“: предупреждението за SSL сертификат