Какие HTTP-коды состояния 5xx (ошибки сервера) вы знаете?

Ответ

Коды состояния HTTP 5xx указывают на ошибки на стороне сервера. Основные из них:

  • 500 Internal Server Error — общая ошибка сервера, когда не удается определить более конкретную причину сбоя.
  • 501 Not Implemented — сервер не поддерживает функциональность, необходимую для выполнения запроса (например, незнакомый метод HTTP).
  • 502 Bad Gateway — сервер, выступая в роли шлюза или прокси, получил недействительный ответ от вышестоящего сервера.
  • 503 Service Unavailable — сервер временно не может обработать запрос из-за перегрузки или технического обслуживания. Заголовок Retry-After может указывать, когда повторить попытку.
  • 504 Gateway Timeout — сервер, выступая в роли шлюза или прокси, не дождался своевременного ответа от вышестоящего сервера.
  • 505 HTTP Version Not Supported — сервер не поддерживает версию протокола HTTP, использованную в запросе.

Почему это важно: Коды 5xx сигнализируют, что проблема не на стороне клиента, и повторная отправка того же запроса без изменений, скорее всего, также завершится ошибкой.

Пример логирования ошибки 504 (Nginx):

2024/01/01 12:00:00 [error] 1234#0: *5678 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.1.1, server: example.com, request: "GET /api/data HTTP/1.1", upstream: "http://backend:8080/api/data", host: "example.com"

Ответ 18+ 🔞

А, слушай, вот это тема! Эти ваши HTTP-коды, особенно пятисотые — это же просто песня, блядь. Как сервер тебе нагло так и говорит: «Сам дурак, я нихуя не могу, иди нахуй». Это не как те четвёрки, где ты виноват, а тут — нихуя не твоя вина, но и нихуя не сделать.

Вот смотри, основные из них, эти пиздатые:

  • 500 Internal Server Error — это классика, ёпта. Сервер просто охуел от твоего запроса и плюнул в потолок. Типа «чё-то пошло не так, а что — сам догадайся, я не в курсе». Общая ошибка, когда он даже не смог понять, на каком именно этапе его ебнуло.
  • 501 Not Implemented — это когда ты пришёл в столовую и попросил фуа-гра, а тебе в ответ: «Мужик, у нас тут щи да котлеты, а ты со своим фуа-гра иди нахуй». Сервер не знает, как обработать твой хитрожопый метод запроса.
  • 502 Bad Gateway — о, это любимое! Сервер-посредник (шлюз или прокси) сходил к другому серверу за ответом, а тот ему какую-то хуйню прислал. Типа «я спросил у начальника, а он мне бумажку с матерными рисунками отдал». Недействительный ответ, короче.
  • 503 Service Unavailable — «Все барыги заняты, позвоните позже». Сервер в отключке: то ли его на техобслуживании ебут, то ли запросов овердохуища и он просто лег и не дышит. Иногда может вежливо сказать в заголовке Retry-After, когда, блядь, повторить попытку.
  • 504 Gateway Timeout — а это ещё круче 502-го! Посредник ушёл к другому серверу, ждал-ждал, тот молчал как рыба об лёд, и время вышло. «Я, блядь, полчаса стучался, а он мне нихуя не ответил, так что и ты иди нахуй».
  • 505 HTTP Version Not Supported — это когда ты приехал на заправку с канистрой и говоришь: «Мне бензин, как в 1910 году, на керосиновой основе». А тебе: «Чувак, у нас тут 95-й и 98-й, а твоей версии HTTP мы не знаем, иди отсюда».

А почему это важно, блядь? Да потому что если ты видишь 5xx — расслабься. Это не ты криворукий, это там, на той стороне, пиздец. Ты можешь тыкать в кнопку F5 до посинения, но пока там не починят, нихуя не изменится. Проблема на стороне сервера.

Вот, например, как Nginx матерится в логах, когда получает 504-й:
(Код не трогаю, оставляю как есть, но представь, как он это выводит с ненавистью)

2024/01/01 12:00:00 [error] 1234#0: *5678 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.1.1, server: example.com, request: "GET /api/data HTTP/1.1", upstream: "http://backend:8080/api/data", host: "example.com"

Перевод на человеческий: «Блядь, процесс №1234, запрос №5678 — тот сервер-придурок (backend:8080) тупил как пень, я так и не дождался от него ответа, пока читал заголовки. Клиент (этот, 192.168.1.1) хотел /api/data. В общем, всё просрали, я устал, я мухожук». Вот и вся история, в рот меня чих-пых.