Код 444: сервер закрив з'єднання без відповіді
Сайт на nginx вирішив не відповідати на запит і просто закрив з'єднання. У вашій програмі коду 444 не буде — лише порожня відповідь.
Оновлено · Редакція Prokso
- Сайт на nginx закрив з'єднання без відповіді, тож програма бачить лише порожню відповідь
- Найчастіше в запиті невідоме ім'я сайту: порожній Host або IP замість домену
- Звертайтеся за доменом, а не за IP сервера, і з правильною схемою
Що означає помилка
444 — нестандартний код вебсервера nginx. За документацією nginx, він закриває з'єднання, не надсилаючи заголовків відповіді. Власник сайту прописує його в налаштуваннях для запитів, які не хоче обслуговувати.
Цей код записується лише в журнал сервера сайту. Клієнт його не отримує: браузер Chrome показує ERR_EMPTY_RESPONSE, curl пише Empty reply from server, бібліотеки — що з'єднання закрито без відповіді.
У документації nginx є типовий приклад: сервер за замовчуванням із return 444 для запитів з невідомим іменем сайту. Тому 444 часто означає, що запит прийшов не на той сайт, якого чекав сервер.
Причини
- Невідоме ім'я сайту в запиті. Заголовок Host порожній, указаний IP замість домену або домен, якого на цьому сервері немає.
- Правило власника сайту. Запити певного виду, з певних адрес чи без потрібних заголовків сервер закриває без відповіді.
- Запит не відповідає протоколу сайту. Наприклад, звичайний HTTP-запит на порт, де сайт чекає HTTPS.
- Обмеження частоти. Частина власників налаштовує 444 замість 429 для запитів понад ліміт.
Як виправити
- Перевірте адресу: звертайтеся за доменом, а не за IP сервера, і правильною схемою — http:// чи https://.
- Переконайтеся, що програма надсилає заголовок Host з тим самим доменом, що й в адресі.
- Відкрийте ту саму сторінку в браузері без проксі. Якщо і там порожня відповідь, сайт так налаштований для всіх.
- Знизьте темп запитів і кількість потоків до цього сайту — див. також помилку 429.
- Якщо доступ потрібен для роботи, а причина в правилах сайту, зверніться до власника сайту. Обходити такі правила не варто: правила користування Prokso забороняють обхід блокувань, які наклав сайт.
Як перевірити, що все запрацювало
Через той самий проксі відкрийте «Мій IP». Якщо сторінка відкривається, проксі працює, а порожню відповідь дає конкретний сайт.
Діагностика за 2 хвилини
Спершу вставте рядок у перевірку проксі. Якщо там проксі працює, причина в програмі чи її налаштуваннях. Якщо ні — перевірте рядок з терміналу:
curl -v -x "http://ЛОГІН:ПАРОЛЬ@gw.prokso.com:823" https://api.ipify.org
- Рядок
< HTTP/1.1 407одразу післяCONNECT— відповідає проксі. Назва після коду, наприкладNO_USER, підказує причину. - Проксі відповів на
CONNECTкодом 200, а далі прийшов інший код — проксі працює, цю відповідь дав сайт. - Жодної відповіді, лише тайм-аут — з'єднання не дійшло до проксі: перевірте хост, порт і мережу.
Питання й відповіді
Чому я не бачу код 444 у своїй програмі?
Бо сервер нічого не надсилає: ні коду, ні заголовків. Код 444 видно лише в журналі сайту, а програма бачить закрите з'єднання.
Це проксі закриває з'єднання?
Помилки проксі Prokso приходять з кодом і назвою причини, наприклад 407 чи 502. Порожня відповідь без коду найчастіше йде від сервера сайту.
Чи списується трафік, якщо відповіді немає?
Списується те, що реально пройшло через проксі: ваш запит і службовий обмін під час з'єднання. Без відповіді це зовсім невеликий обсяг.
Інші помилки проксі
Резидентські $1.59, мобільні $2.50, серверні $0.65 за 1 ГБ
Реєстрація за хвилину, доступи одразу після оплати.