본문 바로가기

nginx4

reset_timedout_connection 옵션 서버 모니터링을 수행하는데 Active Thread 가 끝없이 증가한적이 있었다. nginx 는 아래와 같이 upstream 을 이용해 proxied server와 keepalive 로 연결해놓고 사용중이었다. upstream ybs-server { server localhost:8080; # upstream 서버와 유지할 connection의 갯수를 keepalive로 설정한다. keepalive 200; } 그런데 nginx keepalive_timeout 설정을 했음에도 불구하고 접속이 계속 유지되고 끊기지 않았다. $ netstat -an | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:8080 127.0.0.1:43585 .. 2021. 1. 19.
timeout 설정 정리 nginx 는 reverse proxy로 많이 사용되는 만큼 다양한 timeout 설정이 있다. 각각을 좀 정확히 알고 싶어서 정리했다. client_header_timeout request header 정보를 읽는데 설정된 timeout 시간이다. client_header_timeout에 지정한 시간안에 client가 헤더를 전송하지 않으면 요청은 408(Request Time-out)로 끝난다. 디폴트 값은 60초이다. client_header_timeout 60s; client_body_timeout request body 정보를 읽는데 설정된 timeout 시간이다. request body 전체 전송 timeout 시간이 아니라, 두개의 연속적인 읽기 작업 사이의 timeout 시간이다. clie.. 2021. 1. 19.
파일 업로드/다운로드 시 임시 디렉토리 권한 이슈 client_body_buffer_size 는 client 요청 바디를 읽기 위한 버퍼 크기다. 디폴트 값은 8K (32 bits) | 16K (64 bits) 다. 요청 바디 크기가 버퍼 크기보다 크면, 전체 또는 일부가 http-client-body-temp-path 에 해당하는 디렉토리에 쓰여진다. http-client-body-temp-path 는 최초 nginx 설치 할 때 --http-client-body-temp-path=path 지시자로 정한다. 디폴트 값은 prefix/proxy_temp 이고(prefix는 Nginx 빌드 결과물이 들어갈 디렉토리), 경로는 nginx.conf 에서 client_body_temp_path 지시자로 바꿀 수 있다. 이때 nginx 실행 권한과 디렉토리 접근.. 2021. 1. 19.
nginx gzip 옵션 응답을 압축하면 전송되는 데이터의 크기가 크게 줄어들기도 한다. 그러나 압축은 런타임에 발생하기 때문에 상당한 처리 오버헤드가 추가되어 성능에 부정적인 영향을 미칠 수 있다. nginx는 클라이언트에 응답을 보내기 전에 압축을 수행하지만 이미 압축 된 응답 (예 : 프록시 서버)을 "이중 압축"하지 않는다. 압축을 enable하기 위해서 gzip 지시어를 추가한다. 기본적으로 nginx는 응답을 text/html MIME type으로만 압축한다. gzip on; 다른 MINE type 응답을 압축하기 위해선 gzip_types 지시어를 추가하고 추가적인 type 리스트를 적는다. gzip_types text/plain application/x-javascript text/xml text/css appli.. 2021. 1. 17.