본문 바로가기

ETC

Nginx를 reverse proxy로 사용할 때 POST 요청에서 500 에러 발생

오늘 마주친 문제는 Nginx에서 reverse proxy를 설정해 application server를 연결했을 때, POST 요청을 보내면 500 에러가 발생하는 현상입니다. 요청에 따라 정상적으로 실행되기도 합니다. Nginx를 사용해 많은 개발 작업을 해봤던 분들이라면 한 번쯤 겪었을 듯 한 문제가 아닐까 하는 생각이 듭니다.


문제의 원인은 client_body_buffer_size 보다 큰 값이 post의 body로 전달됐기 때문입니다. 기본 값이 32bit에서는 8K, 64bit에서는 16K인데, 문제를 발생시켰던 요청의 body는 24K가 넘었습니다. 요청 중에 body의 크기가 7K 정도였던 것은 정상적으로 실행된 이유도 함께 알 수 있습니다.


client_body_buffer_size를 50K로 변경한 후 다시 시도하니 정상적으로 요청을 처리할 수 있었습니다.


이 방법 외에도 테스트해보지는 않았지만 client_body_temp_path 를 설정해도 문제를 해결할 수 있을 것으로 보입니다. (테스트는 해보지 않았습니다.) 이 값을 설정하면 요청의 body를 임시로 해당 위치에 저장하게 됩니다.


참고: http://shim0mura.hatenadiary.jp/entry/20120701/1341162337


반응형