====== nginx 기본 설정 ====== * [[http://wiki.nginx.org/Configuration|nginx Configuration]] * [[http://wiki.nginx.org/HttpCoreModule|nginx HttpCoreModule]] * [[nginx:location|nginx location 설정]] ====== 서버 정보 숨기기 ====== * 응답으로 오는 Server 헤더에 nginx 정보가 들어간다. 이를 숨기는 것이 좋다. * [[https://serverfault.com/questions/214242/can-i-hide-all-server-os-info|nginx - Can I hide all server / os info?]] * 버전 번호만 삭제 // http,server,location 컨텍스트안에서 server_tokens off; * ''Server'' 헤더 자체 삭제. 추가 패키지 설치 필요할 수 있음(''nginx-extras'') more_clear_headers Server; ====== timeout ====== send_timeout 60s; # 요청을 보낸 후 응답을 받기까지 대기 시간. 이 설정상 최소 60초 이내에 응답이 와야한다. ===== error_page ===== * [[http://wiki.nginx.org/HttpCoreModule#error_page|HttpCoreModule#error_page]] * error_page 404 /404.html; error_page 502 503 504 /50x.html; error_page 403 http://example.com/forbidden.html; error_page 404 = @fetch; # 응답코드 바꿔치기 error_page 404 =200 /empty.gif; error_page 404 =403 /forbidden.gif; ===== Error Json ===== * [[https://gist.github.com/weapp/99049e69477f924dafa7|Return common errors as json in Nginx]] * ''html'' 보다는 ''json'' 확장자를 선택하면 자동으로 ''application/json'' 응답을 해줄 듯. * [[https://github.com/nginx/nginx/blob/master/conf/mime.types|nginx mime.types]] 에 이미 ''application/json json;'' 이 들어있음. error_page 500 /500.json; location /500.json { return 500 '{"error": {"status_code": 500,"status": "Internal Server Error"}}'; } ===== header/cache expires ===== * [[http://wiki.nginx.org/HttpHeadersModule|nginx HttpHeadersModule]] 헤더 설정을 통한 제어(expire 캐시등) * ''expires epoch;'' : 캐시 끄기 * ''expires max;'' 31 December 2037 23:59:59 GMT, Cache-Control max-age to 10 years. expires 24h; expires modified +24h; expires @15h30m; expires 0; expires -1; expires epoch; add_header Cache-Control private; ===== real ip ===== * 로드 밸런서 등을 사용할 때 실제 요청 IP가 변형되는 현상 방지 * [[http://nginx.org/en/docs/http/ngx_http_realip_module.html|Module ngx_http_realip_module]] ===== Keep Alive ===== * ''keepalive_timeout'' 을 통해서 값을 조정한다. 이를 ''0''으로 하면 keepalive가 꺼진다. keepalive_timeout 0; * ''keepalive''는 성능에 중요한 영향을 끼친다. [[nginx:performance|nginx Performance]] 참조. * [[web:performance|Web 성능 향상]] 에서 ''Keep Alive'' 참조 ===== default charset ===== * 서빙하는 파일들에 기본 charset 헤더(''Content-Type'')을 지정하고자 할 때. # charset_types 에 charset을 자동으로 붙여줄 mime type들 추가. text/html은 지정하지 말 것. charset_types text/xml text/plain text/css application/javascript application/x-javascript application/rss+xml; charset UTF-8; ===== 참조문서 ===== * [[http://nginx.org/en/docs/control.html|Controlling nginx]] * [[https://juneyr.dev/nginx-basics|나는 nginx 설정이 정말 싫다구요 | juneyr.dev]]