====== 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]]