[번역] How To Optimize Nginx Configuration(Nginx 의 설정 최적화)

Nginx 에 대해서 몇가지 관심을 갖다가 설정에 따른 성능향상, 영향에 대해서 쓴 글을 보게 되었는데 공부할겸 정리해 둔다. 거창하게 제목에 번역이라고 달았지만, 그냥 아는단어를 한글화 했다고 보면 된다. 아래의 링크는 원문링크이다. 오류가 있다면 댓글로!

#### worker_processes


– nginx 의 중추적인 역할, core당 1 worker process


worker_connection 


– 얼마나 많은 사람들이 nginx 로 동시에 접근가능한지, 

– ulimit -n 을 통해서 측정해서 사용해라. 


buffer size


– 너무작으면 빈번히 nginx 가 디스크에 read/write 를 임시파일을 쓰기 위해서 일으킨다. 

– clientbodybuffer_size : 클라이언트 버퍼 사이즈, POST Action 과 연관이 있다. 

– clientheaderbuffer_size : 클라이언트 헤어 버퍼 사이즈 1KB

– clientmaxbody_size : 클라이언트에서 허용되는 최대 사이즈, 초과하게 되면 413 error를 뱉거나 Request Entity Too Large 를 리턴

– largeclientheader_buffers : 큰 클라이언트의 헤더를 위한 개수와 사이즈 지정 


Timeouts


– 성능을 개선할수 있다. 

– clientbodytimeout 

– clientheadertimeout 

이 두개는 client 가 요청수 서버의 응답을 기다리는 시간. 초과시 408 에러, request time out 

– keepalive_timeout : 클라이언트의 keepalive connection 의 시간 설정 

– send_timeout : 특정(지정한) 시간 이후에 클라이언트가 아무것도 하지 않으면 연결 종료시킨다. 


GZIP Compression 


– nginx 에서 처리해야 하는 네트워크의 양을 줄인다. gzipcomplevel을 너무 높이면 cpu cycle을 낭비하게 된다. 


Static File Caching 


– header 에 쓰이는 파일(변하지 않고 서버에서 정기적으로 제공하는)에 만기(expire)를 설정해라. server 블록에 있다. 


Logging


– nginx 를 모든 요청 로그를 남긴다. 꺼라 


결론 


– 알맞게 설정된 서버가 가장 중요한데 이것은 모니터링을 해보고 적절히 수정해 봐야 한다. 위의 설정 중 영원한 것은 없으며, 각각의 독특한 경우에 맞게 조정이 필요하다. 그리고 나서 로드 밸런싱이나 수평적 확장을 알아보면 된다.