🐾 냥냥노트

파일이 안 올라가는데 「404」가 뜰 때 — 서버가 몰래 자르고 있습니다

2026. 09. 04

사진 여러 장을 한 번에 올리려는데 화면에 「보내지 못했어요」만 떴습니다. 서버가 돌려준 답을 열어 보니 404 였습니다.

주소는 분명히 맞았습니다. 같은 주소로 작은 자료는 잘 올라갔으니까요.

404가 말이 안 되는 까닭

404는 「그런 주소가 없다」는 뜻입니다. 그런데 같은 주소로 사진 한 장만 보내면 멀쩡히 올라갔습니다.

주소가 아니라 크기가 문제라는 뜻이었습니다.

프로그램에는 아무것도 안 찍혔다

자료를 받는 프로그램 안에 로그를 심어 두고 다시 보내 봤습니다.

아무것도 안 찍혔습니다.

요청이 프로그램까지 아예 도달하지 못한 것입니다. 앞단의 웹서버가 먼저 잘라내고 자기 오류 페이지를 돌려주고 있었습니다.

벽을 재보니

보내는 크기를 조금씩 늘려 가며 어디서 갈리는지 재봤습니다.

보낸 크기답
129,331 바이트200 (성공)
133,275 바이트404

131,072바이트 — 128KB가 벽이었습니다.

자료를 받는 쪽 프로그램은 400,000자까지 받도록 되어 있었습니다. 서버 코드는 죄가 없었습니다.

왜 알아채기 어려운가

두 가지가 겹칩니다.

첫째, 화면에는 「보내지 못했어요」로만 보입니다. 서버가 돌려준 것이 JSON이 아니라 HTML이라, 답을 읽는 쪽에서 먼저 깨지기 때문입니다. 진짜 오류는 그 뒤에 숨습니다.

둘째, 404라는 숫자가 사람을 엉뚱한 데로 보냅니다. 주소를 다시 보고, 오타를 찾고, 파일이 있는지 확인하게 됩니다. 전부 헛수고입니다.

어떻게 넘겼나

길은 두 가지입니다.

줄이는 쪽을 골랐습니다. 한 번에 110,000자 안으로 맞추고, 그래도 크면 그림을 한 번 더 작게 줄이도록 했습니다. 128KB에 딱 붙이지 않은 것은 여유를 두기 위해서입니다.

그리고 **404가 오면 「보내는 자료가 너무 커서 서버가 막았어요」**라고 화면에 그대로 적어 주게 고쳤습니다. 다음에 또 만나도 헤매지 않도록.

다음에 같은 일을 만나면

같은 서버를 쓰는 다른 기능에도 같은 벽이 있습니다. 큰 자료를 보내는 것을 새로 만들 때는 처음부터 쪼개 두는 편이 낫습니다.

🐾 곰곰이 한마디
막히는 데가 있으면 알려주세요. 겪은 만큼 적어 두겠습니다.