Код 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 ГБ
Регистрация за минуту, доступы сразу после оплаты.