Код 444 в nginx: что значит и как закрыть соединение без ответа
444 — не код HTTP, а внутренний сигнал nginx: закрыть соединение и ничего не отправлять. Посетитель не получает ни страницы, ни кода — браузер покажет ошибку соединения. Код 444 виден только в журнале доступа nginx. Им отсекают сканеры, ботов и запросы к серверу по IP-адресу или по чужому домену.
Содержание 10
Что означает код 444
В стандарте HTTP кода 444 нет. Это особый код nginx: директива return 444 велит закрыть соединение, не отправив клиенту даже заголовка ответа. Клиент не получает ни страницы, ни кода, а nginx записывает в журнал доступа 444 — так видно, сколько запросов он отсёк.
Со стороны клиента это выглядит как оборванное соединение. Например, на запрос по HTTP/1.1 Chrome покажет ошибку ERR_EMPTY_RESPONSE — сервер закрыл соединение, не прислав данных, — а curl завершится с кодом 52: ответа от сервера не было.
Если вы посетитель
- Если вы открывали сайт по IP-адресу или по старому домену, сервер мог намеренно не ответить на такой запрос. Откройте сайт по его обычному адресу.
- Повторите попытку позже.
- Если ошибка не проходит, сообщите владельцу сайта, какой адрес вы открывали и когда.
Зачем закрывать соединение без ответа
Ответ 403 или 404 — всё равно ответ: сервер отправляет заголовки и страницу ошибки, и по ним видно, что на этом адресе работает веб-сервер. С кодом 444 nginx не отправляет ничего. Так поступают с запросами, которые обычным посетителям не нужны:
- запросы к серверу по IP-адресу или по именам, которые на сервере не настроены;
- запросы без заголовка Host;
- типовые адреса, которые перебирают сканеры, — например, /.env.
Как отсечь запросы по IP-адресу и на чужие домены
Если имя из запроса не подходит ни к одному блоку server или заголовка Host нет совсем, nginx отдаёт запрос серверу по умолчанию для этого порта. Поставьте в такой блок return 444 — и эти запросы получат обрыв соединения, а ваши сайты будут работать как обычно:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name "";
return 444;
}Похожий пример есть в документации nginx: пустое имя в server_name подходит к запросам без заголовка Host. С версии 0.8.48 пустое имя стоит по умолчанию, и эту строку можно не писать.
На одном порту сервер по умолчанию может быть только один: если default_server стоит у двух блоков, nginx не примет настройки и сообщит «a duplicate default server». В Ubuntu строка listen 80 default_server уже есть в стандартном сайте default. Уберите ссылку на него из /etc/nginx/sites-enabled — так сделано в инструкции Как разместить сайт на VPS.
То же для HTTPS
Для HTTPS в блок по умолчанию ставят директиву ssl_reject_handshake (есть с версии 1.19.4): nginx отклонит установку защищённого соединения, если имя не подходит ни к одному из ваших сайтов.
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_reject_handshake on;
}До HTTP-запроса дело здесь не доходит, поэтому кода 444 в журнале доступа не будет.
Как отсечь сканеры
Внутри сайта код 444 подходит для адресов, которые запрашивают только сканеры, — например, файла .env, в котором у приложений бывают записаны пароли:
location = /.env {
return 444;
}После любых правок: sudo nginx -t, затем sudo systemctl reload nginx.
Как проверить, кого отсекает 444
Двадцать адресов с наибольшим числом ответов 444 покажет команда:
awk '$9 == 444 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Она рассчитана на стандартный формат журнала nginx: девятое поле — код ответа, седьмое — адрес. Если у сайта свой журнал, подставьте его путь. Если в списке оказались настоящие страницы сайта, правило задевает посетителей — поправьте его.
Чем 444 отличается от соседних кодов
| Код | Когда возникает |
|---|---|
| 400 | Запрос испорчен — посетитель получает страницу ошибки |
| 403 | Доступ запрещён — посетитель получает страницу ошибки |
| 444 | nginx закрыл соединение, ничего не ответив |
| 499 | Наоборот: соединение закрыл клиент, не дождавшись ответа |
Источники
- Документация nginx: директива return — код 444 закрывает соединение без ответа.
- Документация nginx: как nginx обрабатывает запросы — сервер по умолчанию и запросы без заголовка Host.
- Документация nginx: listen и ssl_reject_handshake.
- Исходный код Chromium: список сетевых ошибок — ERR_EMPTY_RESPONSE.
- Документация curl — коды завершения.
Сверено 6 октября 2026 года.
Что почитать дальше
- Как разместить сайт на VPS — настройка nginx с нуля.
- Код 499 в nginx — ещё один код, который есть только в nginx.
- Ошибка 403 Forbidden — когда доступ запрещён.
- Хостинг и VPS с защитой от DDoS — когда своих правил мало.
Проверено и обновлено: 07.10.2026