Infra

๐Ÿšซ Nginx 413 Request Entity Too Large ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•


์›น ์„œ๋ฒ„์—์„œ ํŒŒ์ผ ์—…๋กœ๋“œ ๋˜๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ ค ํ•  ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋งˆ์ฃผํ•œ ์  ์žˆ์œผ์‹ ๊ฐ€์š”?

413 Request Entity Too Large

์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ ์š”์ฒญ ๋ณธ๋ฌธ(request body)์˜ ํฌ๊ธฐ๊ฐ€ Nginx๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Nginx๋Š” 1MB๊นŒ์ง€๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ์—๋Ÿฌ ์ƒํ™ฉ ์˜ˆ์‹œ

์ €๋Š” /api/parse ๋ผ๋Š” ๊ฒฝ๋กœ๋กœ Flask ์•ฑ์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํ™˜๊ฒฝ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. POST ์š”์ฒญ์œผ๋กœ PDF๋‚˜ ์ด๋ฏธ์ง€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ๋ฐœ์ƒํ–ˆ์ฃ .

location /api/parse {
    proxy_pass http://localhost:8088/parse;
    ...
}

๐Ÿ”ง ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: client_max_body_size ์„ค์ • ์ถ”๊ฐ€

Nginx ์„ค์ •์—์„œ ํ•ด๋‹น location ๋ธ”๋ก์— ์•„๋ž˜ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

client_max_body_size 50M;

์˜ˆ์‹œ: ์ „์ฒด location ๋ธ”๋ก ์ˆ˜์ •

location /api/parse {
    client_max_body_size 50M; # โ† ์š”์ฒญ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ 50MB๋กœ ์„ค์ •
    proxy_pass http://localhost:8088/parse;
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Content-Type';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

๐Ÿ”„ ์„ค์ • ์ ์šฉ ์ˆœ์„œ

  1. ์„ค์ • ํŒŒ์ผ ์ €์žฅ
  2. ๋ฌธ๋ฒ• ์ฒดํฌ:
  3. sudo nginx -t
  4. ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ ๋˜๋Š” reload:
  5. sudo systemctl reload nginx

๐Ÿ“Œ ์ถ”๊ฐ€ ํŒ: Flask ์•ฑ์˜ ๋ณธ๋ฌธ ํฌ๊ธฐ ์ œํ•œ๋„ ํ™•์ธ!

Flask์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณธ๋ฌธ ํฌ๊ธฐ ์ œํ•œ์ด ์—†์ง€๋งŒ, request.data๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ๋ผ๋ฉด WSGI ์„œ๋ฒ„(Gunicorn ๋“ฑ)์—์„œ๋„ ์ œํ•œ์„ ๊ฑธ์–ด๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„๋„ ํ•จ๊ป˜ ์ ๊ฒ€ํ•ด๋ณด์„ธ์š”.


์ด์ œ ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ณด๋ฉด ๋” ์ด์ƒ 413 ์˜ค๋ฅ˜ ์—†์ด ํŒŒ์ผ ์—…๋กœ๋“œ๋‚˜ ๋Œ€์šฉ๋Ÿ‰ JSON ์š”์ฒญ์ด ์ž˜ ์ฒ˜๋ฆฌ๋  ๊ฑฐ์˜ˆ์š”. ๋งŒ์•ฝ ์—…๋กœ๋“œ ์šฉ๋Ÿ‰์ด ๋” ํฌ๋‹ค๋ฉด 100M, 200M ๋“ฑ์œผ๋กœ ์กฐ์ ˆํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.