Ответ
Коды состояния 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. В общем, всё просрали, я устал, я мухожук». Вот и вся история, в рот меня чих-пых.