Перейти к содержимому
SEO/Опубликовано 18 октября 2026 г./5 мин

Ошибка 505: версия HTTP не поддерживается

Ошибка 505 значит, что сервер не принимает версию протокола HTTP, указанную в запросе. Проверили на стенде nginx, Apache, Node и Python, какие версии дают 505, и отправили такой запрос на 2056 живых сайтов.

Ошибка 505: версия HTTP не поддерживается
N
Команда NEXFORCE
Кто пишет блог

Ошибка 505 HTTP Version Not Supported означает, что сервер не принимает версию протокола, указанную в запросе. Обычный посетитель её почти не встречает: браузеры отправляют корректные запросы с актуальными версиями протокола. Чаще всего ошибку получают скрипты, программы, интеграции и прокси. Мы подняли стенд с nginx, Apache, Node и Python, отправили запросы с разными версиями HTTP и повторили один такой запрос на 2056 живых сайтах, чтобы выяснить, кто и когда отвечает 505.

Код ответа своей страницы можно проверить нашим сервисом проверки доступности: он запрашивает адрес со своего сервера и показывает, что ответил сайт.

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

Каждый запрос HTTP/1 начинается со строки: метод, адрес и версия, например GET / HTTP/1.1. Стандарт HTTP, RFC 9110, раздел 15.6.6, описывает 505 так: сервер «does not support, or refuses to support, the major version of HTTP that was used in the request message» — не поддерживает или отказывается поддерживать основную версию HTTP, указанную в запросе.

Версия состоит из двух цифр через точку. Первая — основная: она меняется, когда меняется сам формат сообщений. Вторая — дополнительная, внутри той же основной версии. Поэтому 505 касается именно основной цифры: «HTTP/2.0» вместо «HTTP/1.1».

Стандарт добавляет, что сервер должен объяснить в ответе, почему версия не поддерживается и какие протоколы он поддерживает. На практике серверы этого не делают: nginx отдаёт короткую страницу с кодом и своим названием.

Откуда в запросе берётся неправильная версия

HTTP/2 и HTTP/3 не используют текстовую строку версии. Браузер и сервер договариваются о протоколе при установке защищённого соединения, а дальше обмениваются двоичными кадрами. Строка GET / HTTP/2.0 — это текстовый запрос HTTP/1 с неправильной версией. Так пишут:

  • самописные клиенты и скрипты, где версию вписали руками;
  • сканеры и боты, которые проверяют реакцию сервера;
  • прокси и балансировщики, которые неправильно пересобирают запрос;
  • старые библиотеки, которые не умеют работать с новыми протоколами.

Отдельный случай — клиент начинает разговор сразу на HTTP/2, без согласования, а сервер понимает только HTTP/1. Это мы тоже проверили: такой запрос получает не 505, а 400.

Стенд: какие версии дают 505

Мы отправили запрос GET / с разными версиями в nginx 1.22, Apache 2.4.68, встроенный сервер Node 20 и встроенный сервер Python.

Версия в запросеnginxApacheNodePython
HTTP/1.1, HTTP/1.0200200200200
HTTP/1.2, HTTP/1.9200200400200
HTTP/2.0, HTTP/3.0505200200 и 400505
HTTP/9.9505200400505
HTTP/2 (без точки)505400400505
HTTPS/1.1, http/1.1400400400400
Преамбула HTTP/2 без согласования400400400—

Что из этого следует.

nginx отвечает 505 на основную версию выше 1. «HTTP/2.0», «HTTP/3.0» и «HTTP/9.9» получили 505, а «HTTP/1.2» и «HTTP/1.9» — 200: дополнительная цифра nginx не смущает. В журнале ошибок nginx — строка «client sent invalid version while reading client request line».

Apache 2.4 505 не отвечает. На «HTTP/2.0», «HTTP/3.0» и «HTTP/9.9» он вернул страницу с кодом 200, будто запрос правильный. Ошибку 400 он дал только на запись без точки и на «HTTP/1.10».

Node строже всех. Встроенный сервер принял «HTTP/2.0», но на «HTTP/3.0», «HTTP/1.2» и любую другую незнакомую версию ответил 400. 505 он не вернул ни разу.

Python отвечает 505 без строки статуса. Встроенный сервер написал в теле «Error code: 505», но не отправил строку «HTTP/1.0 505»: клиент получает только HTML.

Ошибка в записи — это 400, а не 505. «HTTPS/1.1» и «http/1.1» строчными буквами все четыре сервера отклонили как неправильный запрос.

Прокси прячет сервер за собой — возможно, это главный сценарий. Мы поставили nginx перед сервером Python. Ответ 505 давал nginx, и запрос до Python не доходил.

Как ошибка выглядит в браузере

Мы открыли в Chromium 149 сервер, который отвечает 505. Если сервер прислал страницу, браузер показывает её: обычно это крупная надпись «505 HTTP Version Not Supported» и подпись сервера. Если тела в ответе нет, Chrome показывает свою страницу: «Страница недоступна. Если проблема не исчезнет, свяжитесь с владельцем сайта. HTTP ERROR 505» и кнопку «Перезагрузить».

Наш замер: как отвечают живые сайты

17.10.2026 мы отправили на 2056 сайтов организаций Екатеринбурга по одному запросу с каждой версией: HTTP/1.1, HTTP/2.0, HTTP/3.0 и HTTP/1.2. Обычный запрос HTTP/1.1 получил ответ от 1668 сайтов.

Версия505400200
HTTP/2.0123732262
HTTP/3.0123533552
HTTP/1.2—711236

Ответ зависит от того, кто принимает запрос первым:

  • nginx стоит перед 1040 сайтами, и 986 из них на «HTTP/2.0» ответили 505.

  • DDoS-Guard — 294 сайта, и все 294 ответили 400.

  • Cloudflare — 80 сайтов, все ответили 505.

  • Apache — 46 сайтов: 20 ответили 200, как на стенде, и 15 — 505; вероятно, перед ними стоит другой сервер.

Наш сайт nexforce.ru работает на nginx и ведёт себя как стенд: 505 на «HTTP/2.0» и «HTTP/3.0», 200 на «HTTP/1.2».

Вывод: одна и та же ошибка клиента на разных сайтах выглядит по-разному. Если ваш скрипт получает 505 от одного сайта и 400 или 200 от другого, дело не в сайтах, а в запросе.

Причины ошибки 505

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

На стороне клиента:

  • версия HTTP в запросе вписана руками или устарела;
  • библиотека или программа собирает запрос неправильно;
  • клиент пытается говорить на протоколе, который сервер не включил.

На стороне сервера:

  • прокси, балансировщик или защита пересобирает запрос и портит строку версии;
  • в цепочке есть старый сервер, который не понимает версию, которую ему передаёт прокси;
  • после обновления одного звена версии в цепочке перестали совпадать.

Что делать пользователю

Если ошибку видит обычный посетитель в браузере, проблема почти наверняка не у него. Можно проверить несколько простых вещей:

  1. Обновите страницу. Если ошибка разовая, она исчезнет.
  2. Откройте сайт в другом браузере или с телефона через мобильный интернет. Ошибка пропала — причина в прокси, VPN или расширении на вашем устройстве.
  3. Отключите VPN и прокси в настройках операционной системы на компьютере. Промежуточный сервер тоже может портить запросы.
  4. Обновите браузер до последней версии, если он давно не обновлялся.
  5. Очистите кэш и cookie этого сайта. С ошибкой 505 это связано редко, но иногда в браузере остаются старые данные, и это действие безвредно.

Если ошибка повторяется на разных устройствах, обратитесь к владельцу сайта: сообщите адрес страницы, время, когда возникла ошибка, и что вы делали. Эти данные помогут найти причину в журналах сервера.

Что делать разработчику и владельцу сайта

Проверить запрос

Если 505 получает ваш скрипт или интеграция, посмотрите, какую строку он отправляет. В curl версию можно задать явно, а флаг -v покажет, что ушло на сервер:

curl -v --http1.1 https://example.ru/

Для HTTP/2 используйте настоящую поддержку протокола в библиотеке, а не строку «HTTP/2.0» в запросе. Многие современные библиотеки умеют согласовывать протокол сами; если ваша не умеет, обновите её или переустановите программу, которая отправляет запросы.

Проверить сервер своими руками

Отправьте запрос с неправильной версией и посмотрите, кто ответил. Это покажет, какой сервер стоит первым:

printf 'GET / HTTP/2.0\r\nHost: example.ru\r\nConnection: close\r\n\r\n' \
  | openssl s_client -quiet -connect example.ru:443 -servername example.ru 2>/dev/null \
  | head -5

В ответе будет код и заголовок Server. Что такое ответ сообщает: 505 с подписью nginx — первым стоит nginx; 400 без подписи — скорее всего, защита. Этот же приём полезен, чтобы проверить состояние сайта после того, как вы перенастраиваете прокси.

Проверить цепочку прокси

Если 505 видят обычные посетители, ищите звено, которое портит запрос. Сравните журналы: запрос, который пришёл на внешний прокси, и запрос, который дошёл до сервера приложения. В журнале доступа nginx версия видна в строке запроса, а в журнале ошибок — пометка «invalid version». Проверьте, какую версию прокси использует к серверу за собой: в nginx это директива proxy_http_version, по умолчанию 1.0.

Включить нужные протоколы

Если клиенты должны работать по HTTP/2, включите его на сервере правильно: в nginx — директивой http2 on на защищённом порту (в версиях до 1.25.1 — параметром http2 в директиве listen). Тогда клиенты договорятся о протоколе сами и строка версии в запросе не понадобится.

Если сайт на хостинге

На виртуальном хостинге доступа к конфигурации веб-сервера обычно нет. В этом случае обратитесь в техническую поддержку провайдера хостинга: опишите, какой запрос получает 505, с какого адреса и в какое время. Если ошибка появляется после изменений в панели управления — например, после включения защиты или смены версии PHP, — сообщите об этом: такие изменения способны поменять сервер, который первым принимает запросы.

Малозаметные детали

  • Защита и CDN отвечают сами. На живых сайтах Cloudflare давал 505, а DDoS-Guard — 400 ещё до того, как запрос доходил до сайта. Если перед сайтом стоит такой сервис, проверять нужно его настройки, а не только сервер.
  • Внутренние запросы. Иногда 505 возникает не между браузером и сайтом, а между двумя серверами: сайт обращается к своему API, платёжному шлюзу или складу. Посетитель видит общую ошибку, а настоящий код остаётся в журнале.
  • Временные сбои бывают при обновлении. Если существующие клиенты перестали подключиться сразу после изменения конфигурации, верните прежнюю и сравните настройки протоколов.

Как проверить, что ошибка устранена

Повторите тот запрос, который получал 505, и убедитесь, что ответ теперь 200. Если ошибку видели посетители, откройте сайт в нескольких браузерах и проверьте журнал доступа: записей с кодом 505 от обычных браузеров быть не должно. Записи от сканеров с «HTTP/2.0» в строке запроса — нормальная реакция сервера, их исправлять не нужно: сервер и должен так обрабатывать неправильные запросы. Проверьте и журнал поисковых роботов: на сайте, где всё работает, их запросы получают 200.

Похожие ошибки

  • Ошибка 400 — сервер не разобрал запрос: на стенде её давала версия, записанная с ошибкой.
  • ERR_HTTP2_PROTOCOL_ERROR — сбой внутри соединения HTTP/2, а не неверная версия.
  • Ошибка 502 — прокси не получил правильного ответа от сервера за ним.
  • Ошибка 413 — сервер отказался принять слишком большой запрос.
  • Ошибка 501 — сервер не умеет выполнить метод запроса или способ передачи тела.

Границы замера

Стенд — четыре сервера без своих настроек. Microsoft IIS, LiteSpeed и облачные балансировщики мы на стенде не проверяли, только видели их ответы в обходе. В обходе отправляли по одному запросу на версию к главной странице по HTTPS; защита сайта могла ответить иначе на повторные запросы.

Коротко

Ошибка 505 — сервер не принимает основную версию HTTP из запроса. Браузеры её почти не вызывают: это ошибка скриптов, сканеров и прокси. nginx и Cloudflare отвечают 505 на «HTTP/2.0», Apache — 200, Node и DDoS-Guard — 400. Исправлять нужно клиента или звено цепочки, которое портит строку запроса.

Вопросы и ответы

FAQ по теме

Что означает ошибка 505?+
Сервер не поддерживает или отказывается поддерживать основную версию HTTP, которую клиент указал в запросе. Так код описан в стандарте HTTP, RFC 9110. Обычно это значит, что в строке запроса стоит «HTTP/2.0» или «HTTP/3.0», а сервер понимает только HTTP/1.
Может ли ошибку вызвать мой браузер?+
Почти никогда. Современные браузеры пишут в текстовом запросе HTTP/1.1, а HTTP/2 и HTTP/3 включают через согласование, а не строкой версии. Ошибку 505 обычно получают скрипты, сканеры, самописные клиенты и неправильно настроенные прокси.
Чем 505 отличается от 400?+
400 — сервер не разобрал запрос. 505 — разобрал, но версия протокола ему не подходит. На стенде nginx на «HTTP/2.0» ответил 505, а на «HTTPS/1.1» и «http/1.1» строчными буквами — 400: это уже не версия, а ошибка в записи.
Почему один сайт отвечает 505, а другой на тот же запрос — 200?+
Серверы разбирают строку версии по-разному. На стенде nginx ответил 505 на «HTTP/2.0», Apache 2.4 — 200, Node — 200, а защита DDoS-Guard на живых сайтах — 400. Код зависит от того, кто первым принял запрос.
Влияет ли ошибка 505 на SEO?+
Поисковые роботы шлют обычные запросы HTTP/1.1 или HTTP/2 и 505 не получают. Если робот всё же видит 505 на страницах, проблема на пути к сайту: прокси или балансировщик подменяет запрос. Её нужно искать в журналах, иначе страницы могут выпасть из индекса как недоступные.
Может ли ошибка быть временной?+
Сам код — нет: версия протокола от времени не меняется. Но если 505 появился внезапно после обновления прокси, балансировщика или клиентской библиотеки, причина в этом обновлении, и откат его уберёт.
Читайте также

Связанные материалы

SEO

ERR_HTTP2_PROTOCOL_ERROR: что значит и как исправить

ERR_HTTP2_PROTOCOL_ERROR — сервер оборвал обмен по HTTP/2 посреди запроса. Проверили на стенде с nginx, какие поломки дают эту ошибку, а какие — другую, и почему в консоли она стоит рядом со статусом 200.

SEO

Ошибка 400: сервер не понял запрос

Ошибка 400 Bad Request — сервер счёл запрос испорченным. Мы отправили сайтам Екатеринбурга большие куки, длинные ссылки и кривые адреса: куки от 8 КБ не пропустили шесть сайтов из десяти. Что чинит посетитель, а что владелец.

SEO

Ошибка 413: файл слишком большой для сервера

Ошибка 413 значит, что сервер отказался принимать запрос из-за размера тела: файла или формы. Проверили на стенде nginx, Apache и PHP, где срабатывает лимит, и нашли случай хуже ошибки: форма приходит пустой с кодом 200.

SEO

Ошибка 502: что она значит и чья это поломка

Собрали стенд и сломали сервер приложения девятью способами. 502 рисует исправный посредник, а сломан тот, кто за ним. По строке в журнале видно, что именно отказало, а по скорости ответа — искать ли зависание.