코린이의 기록

[Nginx] (Solved) client intended to send too large body 본문

Web

[Nginx] (Solved) client intended to send too large body

코린이예요 2019. 11. 21. 17:42
반응형

문제

front-end에서 POST API를 사용하여 file을 upload 해야하는데, 10MB 이상을 업로드 하려니까 아래와 같은 error log가 발생했다. 

서버 환경 : Nginx

error log

[error] 7#7: *17 client intended to send too large body: 10596411 bytes,

 

해결 방법

해결방법은 간단하지만 reverse proxy라는 속성으로 조금 해매었다. 

nginx config (conf.d/default.conf)파일에서 client_max_body_size 라는 부분만 추가해주면되는데, 업로드할 서버의 {} 안에 해당 설정값을 넣어주어야 한다. 

 

conf.d/default.conf

server {
  listen 8080;
  ....

}

server {
  listen 8081;
location / {
    client_max_body_size 20M;
    proxy_pass http://${UPLOAD_HOST}:${UPLOAD_PORT};
  }
}

 

Proxy Server를 쓰는 이유

Proxy Server는 다른 네트워크에 간접적으로 접속할 수 있게 해주는 서비스로 클라이언트와 서버간의 중간 다리 역할을 해준다. 프록시 서버는 Firewall 역할을 Proxy Server에서 하기때문에 외부 공격에 안전하다. 또한 캐시를 사용하기 때문에 리소스 접근이 빠르다. 

 

Reverse Proxy Server를 쓰는 이유

리버스 프록시는 주로 서버 관리자가로드 밸런싱 및 고 가용성을 달성하는 데 사용한다. 웹 사이트에는 리버스 프록시 뒤에 여러 웹 서버가있을 수 있습니다. 리버스 프록시 서버는 인터넷에서 요청을 가져 와서 이러한 요청을 웹 서버 중 하나에 전달합니다. 즉, 클라이언트가 a라는 웹서버의 주소로 요청했을때 reverse proxy에 의해 설정된 내부 ip를 통해 뒷 단에 있는 server의 주소b를 요청한다.

 

참고!

내부 네트워크에서 클라이언트를 보호하려면 forward proxy를, 서버를 보호하려는 의도가 있다면 reverse proxy를 사용한다.

 

 

Reference

https://www.jscape.com/blog/bid/87783/forward-proxy-vs-reverse-proxy

반응형
Comments