Помилка Cloudflare 521: вебсервер недоступний - причини і виправлення
Помилка Cloudflare 521 означає, що Cloudflare дістався IP-адреси вашого origin-сервера, але сервер активно відмовив у з'єднанні, зазвичай тому, що на порту, який пробував Cloudflare, ніхто не слухає, з'єднання заблокував брандмауер, чи сам вебсервер зупинено. Це відрізняється від тайм-ауту: щось на origin-сервері одразу відповіло "ні".
Що означає помилка 521
Коли Cloudflare проксіює запит, він відкриває TCP-з'єднання з вашим origin-сервером на порту, налаштованому для цього запису. Помилка 521 виникає, коли origin-сервер надсилає у відповідь TCP-скидання (RST) чи ICMP "connection refused" замість того, щоб прийняти з'єднання. Це однозначна відмова, а не мовчання. Порівняйте це з помилкою 522, де Cloudflare взагалі не отримує відповіді в межах свого тайм-ауту, чи з помилкою 520, де з'єднання встановлюється успішно, а HTTP-відповідь, що йде далі, зіпсована.
Як з'являється помилка 521
Відвідувачі бачать власну сторінку Cloudflare, "Error 521: web server is down", з Ray ID. Запит curl до домену повертає той самий статус:
curl -I https://example.com
HTTP/2 521
Оскільки origin-сервер відмовив у з'єднанні на рівні мережі, до вашого застосунку взагалі нічого не доходить, тож логи застосунку зазвичай не показують нічого для невдалих запитів. Докази лежать ближче до мережі: власні логи запуску й доступу вебсервера, логи з'єднань вашого брандмауера чи групи безпеки хмари, а також системні логи на origin-хості (journalctl -u nginx, systemctl status nginx чи еквівалент для вашого стеку).
Що спричиняє помилку 521
- Процес вебсервера зупинено чи він впав. На порту взагалі ніхто не слухає, тож будь-яка спроба з'єднання отримує негайну відмову.
- Cloudflare налаштовано звертатися не на той порт. Якщо порт origin-сервера, встановлений у DNS-записі чи в мережевих налаштуваннях Cloudflare, не збігається з тим, що ваш сервер справді слухає, у з'єднанні відмовляють щоразу.
- Брандмауер чи хмарна група безпеки блокує діапазони IP-адрес Cloudflare. Якщо правило дозволяє лише конкретні вихідні IP-адреси і опублікованих діапазонів Cloudflare там немає, чи вони були там, а потім їх видалили, з'єднання з edge-мережі Cloudflare скидають чи відхиляють.
- Режим SSL/TLS налаштовано на Full чи Full strict, але на порту 443 origin-сервера ніхто не слухає. Ці режими вимагають, щоб Cloudflare з'єднувався з origin-сервером через HTTPS; якщо origin-сервер віддає лише звичайний HTTP, або налаштування сертифіката так і не завершилося, спроба HTTPS-з'єднання отримує відмову.
- Незв'язана служба вже зайняла порт, який має використовувати вебсервер, тож сам вебсервер узагалі не запускається.
521 проти 523 проти 522
Ці три коди легко переплутати, бо всі вони описують з'єднання, яке так і не дало HTTP-відповіді, але кожен означає, що Cloudflare провалився на іншому етапі.
- 521, web server is down: Cloudflare дістався IP-адреси origin-сервера, і щось там активно відмовило у з'єднанні (TCP-скидання чи ICMP unreachable). Сервер існує і відповів, просто відмовою.
- 523, origin is unreachable: Cloudflare навіть не зміг зайти так далеко. Це вказує на проблему маршрутизації, DNS чи IP-адреси, найчастіше на DNS-запис у Cloudflare, що досі вказує на стару IP-адресу після міграції сервера, чи приватний мережевий маршрут (наприклад, Cloudflare Tunnel), що не працює.
- 522, connection timed out: Cloudflare спробував TCP-рукостискання, але не отримав відповіді вчасно - ні прийняття, ні відмови. Дивіться окремий посібник про помилку Cloudflare 522 для цього випадку.
Як зрозуміти, хто винен
521 - сильний сигнал, що проблема на боці origin-сервера від edge Cloudflare, оскільки відмова прийшла від вашого власного сервера чи мережі безпосередньо перед ним. Операційно важливе питання - чи це зачіпає весь сайт, чи лише частину трафіку, і найшвидший спосіб перевірити - запустити HTTP-перевірку з кількох локацій одночасно. HTTP-перевірка HostTracker звертається до домену з контрольних точок у кількох країнах і повідомляє кожен результат окремо, тож ви одразу побачите, чи 521 отримують усі локації однаково, чи лише частина - це вказувало б на часткове правило брандмауера чи балансувальник навантаження з одним нездоровим бекендом, а не на повністю мертвий сервер.
Як виправити помилку 521
Якщо ви відвідувач
- Перезавантажте сторінку через якийсь час. Якщо оператор сайту перезапускає сервер, виправлення вже може бути в процесі.
- Перевірте сторінку статусу сайту, якщо вона є, чи його соцмережі на предмет відомого повідомлення про збій.
- На вашому боці нема чого змінювати. Відмова відбувається на власному сервері сайту, а не у вашому браузері, DNS чи провайдері.
Якщо ви керуєте сайтом
- Підтвердьте, що процес вебсервера справді працює:
systemctl status nginx(чи еквівалент), і перевірте його логи на предмет збою чи невдалого перезапуску. - Підтвердьте, що порт, налаштований у Cloudflare, збігається з тим, що слухає ваш сервер. Перевірте порт origin-сервера в налаштуваннях DNS-запису чи Network у панелі керування Cloudflare відносно фактичних портів прослуховування вашого сервера (
ss -tlnpу Linux). - Перевірте, чи ваш брандмауер або хмарна група безпеки дозволяють вхідний трафік з опублікованих діапазонів IP-адрес Cloudflare на цьому порту. Cloudflare публікує свої актуальні діапазони IPv4 та IPv6 на cloudflare.com/ips; правило, побудоване зі старої копії цього списку, почне відхиляти нові діапазони в міру їх додавання.
- Якщо ваш режим шифрування SSL/TLS - Full чи Full strict, підтвердьте, що на порту 443 origin-сервера справді щось слухає із сертифікатом, який Cloudflare зможе перевірити. Тимчасове перемикання на Flexible - корисний діагностичний крок, щоб підтвердити саме цю причину, а не постійне рішення, оскільки Flexible залишає з'єднання між Cloudflare і вашим origin-сервером незашифрованим.
- Оминіть Cloudflare, щоб протестувати origin-сервер напряму й побачити саму відмову без edge-шару посередині:
"Connection refused" тут підтверджує, що проблема в слухачі origin-сервера чи брандмауері, а не в Cloudflare.curl -v -H "Host: example.com" https://ORIGIN_IP:PORT/ - Перевірте, чи щось інше на хості не зайняло порт, який очікує ваш вебсервер, що не дало б вебсерверу прив'язатися до нього при запуску.
Як запобігти цьому
Правило брандмауера, яке дозволяє лише діапазони Cloudflare, - поширений спосіб для 521 з'явитися знову через місяці, оскільки Cloudflare з часом додає й виводить із користування діапазони IP-адрес, а правило, скопійоване один раз, застаріває. HTTP-перевірка, що виконується поза вашою мережею, ловить такий збій так само, як його побачив би відвідувач, замість покладатися на те, що хтось помітить недоступність сайту й повідомить про це.
Пов'язані помилки
- Помилка Cloudflare 520: невідома помилка - origin-сервер відповів, але відповідь не вдалося передати.
- Помилка Cloudflare 522: тайм-аут з'єднання - рукостискання взагалі не отримало відповіді.
- Помилки сервера 5xx - загальна родина кодів статусу.
- 502 Bad Gateway - версія збою upstream, не специфічна для Cloudflare.
Часті запитання
Чи означає помилка 521 те саме, що фізично вимкнений сервер?
Не обов'язково. Вона означає, що щось відмовило у TCP-з'єднанні, а це може бути процес вебсервера, зупинений поки сама машина лишається увімкненою, брандмауер, що відхиляє запит, невідповідність режиму TLS, а також справді вимкнений сервер.
Який найшвидший спосіб підтвердити, що причина - брандмауер?
Зверніться до origin-сервера напряму за його IP-адресою із заголовком Host домену, оминаючи Cloudflare. Якщо це теж отримує відмову, блокування, найімовірніше, на власному брандмауері чи в групі безпеки origin-сервера, а не пов'язане саме з IP-діапазонами Cloudflare.
Чому 521 могла початися без жодної зміни на моєму сервері?
Cloudflare періодично оновлює свої опубліковані діапазони IP-адрес. Правило брандмауера, побудоване зі старої копії цього списку, перестає збігатися з нещодавно доданими діапазонами, тож запити з цих діапазонів отримують відмову, навіть якщо на вашому власному сервері нічого не змінювалося.
Чи виправляє перемикання режиму SSL/TLS на Flexible помилку 521 назавжди?
Це може приховати невідповідність режиму Full чи Full strict, оскільки Flexible не вимагає HTTPS на origin-сервері, але це також означає, що з'єднання між Cloudflare і вашим сервером незашифроване. Ставтеся до цього як до діагностичного кроку, а тоді виправте TLS-слухач origin-сервера й перемкніться назад.
Чим 521 відрізняється від 523?
521 означає, що Cloudflare дістався origin-сервера, і той відмовив. 523 означає, що Cloudflare взагалі не зміг його дістатися, а це вказує на DNS, маршрутизацію чи зламаний тунель, а не на щось, що зробив сам origin-сервер.