Код 444: сервер закрыл соединение без ответа

Сайт на nginx решил не отвечать на запрос и просто закрыл соединение. В вашей программе кода 444 не будет — только пустой ответ.

Обновлено · Редакция Prokso

Коротко
  • Сайт на nginx закрыл соединение без ответа, поэтому программа видит только пустой ответ
  • Чаще всего в запросе неизвестное имя сайта: пустой Host или IP вместо домена
  • Обращайтесь по домену, а не по IP сервера, и с правильной схемой

Что означает ошибка

444 — нестандартный код веб-сервера nginx. По документации nginx, он закрывает соединение, не отправляя заголовков ответа. Владелец сайта прописывает его в настройках для запросов, которые не хочет обслуживать.

Этот код записывается только в журнал сервера сайта. Клиент его не получает: браузер Chrome показывает ERR_EMPTY_RESPONSE, curl пишет Empty reply from server, библиотеки — что соединение закрыто без ответа.

В документации nginx есть типичный пример: сервер по умолчанию с return 444 для запросов с неизвестным именем сайта. Поэтому 444 часто означает, что запрос пришёл не на тот сайт, которого ждал сервер.

Кто возвращает ошибку: 407 — прокси, 401 и 403 — сам сайтВаша программаПроксиgw.prokso.comСайт407 — отвечает прокси: логин, пароль или остаток трафика401 / 403 — отвечает сайт: вход на сайт или доступ
Кто возвращает ошибку: 407 — прокси, 401 и 403 — сам сайт

Причины

  • Неизвестное имя сайта в запросе. Заголовок Host пустой, указан IP вместо домена или домен, которого на этом сервере нет.
  • Правило владельца сайта. Запросы определённого вида, с определённых адресов или без нужных заголовков сервер закрывает без ответа.
  • Запрос не соответствует протоколу сайта. Например, обычный HTTP-запрос на порт, где сайт ждёт HTTPS.
  • Ограничение частоты. Часть владельцев настраивает 444 вместо 429 для запросов сверх лимита.

Как исправить

  1. Проверьте адрес: обращайтесь по домену, а не по IP сервера, и с правильной схемой — http:// или https://.
  2. Убедитесь, что программа отправляет заголовок Host с тем же доменом, что и в адресе.
  3. Откройте ту же страницу в браузере без прокси. Если и там пустой ответ, сайт так настроен для всех.
  4. Снизьте темп запросов и число потоков к этому сайту — см. также ошибку 429.
  5. Если доступ нужен для работы, а причина в правилах сайта, обратитесь к владельцу сайта. Обходить такие правила не стоит: правила пользования 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 ГБ

Регистрация за минуту, доступы сразу после оплаты.

Создать аккаунт