[정리] Nginx 전투 준비 - 최적화 지침

본문 내용 은 에서 참고 한다.
Nginx 전투 준비 - 최적화 지침
》。
[한 마디 로 정리!]
본 고 는 전면적 인 미조정 지침 이 아니 라 어떤 설정 이 대량의 클 라 이언 트 가 방문 할 때 좋 은 성능 을 가 질 수 있 는 지, 왜 성능 을 향상 시 킬 수 있 는 지 알 게 해 준다.
[지식 포인트]
  • worker_processes 는 nginx 가 대외 적 으로 웹 서 비 스 를 제공 할 때의 worder 프로 세 스 수 를 정의 합 니 다.
  • worker_rlimit_nofile 에서 워 커 프로 세 스 의 최대 열 림 파일 수 제한 을 변경 합 니 다.
  • 이벤트 모듈 에는 nginx 의 연결 처리 와 관련 된 모든 설정 이 포함 되 어 있 습 니 다.
  • worker_connections 의 값 과 workerrlimit_nofile 값 은 관계 가 있 습 니 다. 이 값 의 크기 는 시스템 에서 사용 할 수 있 는 포트 수 (~ 64k) 에 제한 되 어 있 습 니 다.
  • multi_accept 는 nginx 에 게 새로운 연결 에 대한 읽 을 수 있 는 알림 을 받 은 후에 현재 존재 하 는 모든 클 라 이언 트 의 연결 을 가능 한 한 처리 해 야 한다 고 알려 줍 니 다.
  • use 설정 은 어떤 I / O 재 활용 방식 을 사용 합 니까?
  • http 모듈 은 nginx http 처리 의 모든 핵심 특성 을 제어 합 니 다.
  • server_tokens 는 nginx 가 더 빨리 실행 되 지 는 않 지만 오류 페이지 에 있 는 nginx 버 전 숫자 를 닫 을 수 있어 안전성 에 좋 습 니 다.
  • sendfile 은 sendfile () 을 사용 하여 커 널 상태 에서 관련 동작 을 완성 하여 더욱 효율 적 입 니 다.
  • tcp_nopush 는 nginx 에 게 TCP 의 PSH 방식 으로 하나씩 보 내 는 것 이 아니 라 하나의 패 킷 에 모든 HTTP 패 키 지 를 보 내 라 고 알려 줍 니 다.
  • tcp_nodelay 는 nginx 에 게 작은 블록 데 이 터 를 보 낼 때 캐 시 하지 말고 짧 은 데이터 세 션 을 즉시 보 내 라 고 말 했다.이 옵션 은 실시 간 응답 을 받 지 않 고 작은 데이터 세 션 을 자주 보 내 도록 요구 하 는 데 사 용 됩 니 다. 이러한 응용 프로그램 에 있어 서 실시 간 배달 능력 이 필요 하기 때 문 입 니 다.
  • access_로그 설정 nginx 에서 접근 로 그 를 저장 할 지 여부 입 니 다.이 옵션 을 닫 으 면 디스크 I / O 를 읽 는 것 이 더 빠 릅 니 다. (이것 은 닫 기 가 쉽 지 않 습 니 다.)
  • error_log 는 nginx 에 게 심각 한 오 류 를 기록 할 수 밖 에 없다 고 알려 줍 니 다.
  • keepalive_timeout 은 클 라 이언 트 에 keep - alive 링크 시간 을 초과 합 니 다.서버 는 이 시간 초과 후에 링크 를 닫 을 것 입 니 다.우 리 는 그것 을 좀 낮 게 설정 해서 ngnix 가 더 오래 일 할 수 있 도록 합 니 다.
  • client_header_timeout 와 clientbody_timeout 설정 은 클 라 이언 트 로부터 요청 을 받 지 못 한 header 나 body 부분 은 시간 이 초과 되 었 다 고 생각 합 니 다.
  • reset_timeout_connection 은 nginx 에 게 연결 시간 이 초과 되면 클 라 이언 트 에 RST 를 보 내 응답 하지 않 는 클 라 이언 트 연결 을 직접 리 셋 하 라 고 알려 줍 니 다.이것 은 클 라 이언 트 가 차지 하 는 메모리 공간 을 방출 합 니 다. (RST 방식 으로 리 셋 하면 부작용 이 있 을 수 있 습 니 다.)
  • send_timeout 은 nginx 가 응답 하 는 시간 초과 시간 을 지정 합 니 다. 즉, nginx 가 클 라 이언 트 에 게 패 킷 을 보 냈 지만 클 라 이언 트 가 이 패 킷 을 처리 하지 않 은 경우 가 일치 합 니 다.이 시간 초과 시간 은 응답 이 완전 하 게 전송 되 는 시간 이 아니 라 두 번 연속 되 는 클 라 이언 트 사 이 드 읽 기 작업 의 시간 간격 을 제약 하 는 데 사 용 됩 니 다.
  • limit_conn_zone 은 공유 메모리 영역 에 대한 정 보 를 설정 하 는 데 사 용 됩 니 다.공유 메모리 영역 에 서 는 각종 key 의 상태 정 보 를 저장 할 수 있 습 니 다 (예 를 들 어 현재 연결 데이터).용법: limitconn_zone $binary_remote_addr zone=addr:5m;
  • limit_conn 은 지정 한 key 값 과 연 결 된 연결 수의 최대 값 을 설정 합 니 다.용법: limitconn addr 100; 각 ip 주소 에 100 개의 동시 연결 만 허용 한 다 는 뜻 입 니 다.
  • include 는 현재 파일 에 다른 파일 내용 을 포함 하 는 명령 일 뿐 입 니 다.어댑터 사용 가능 *.
  • default_type 설정 파일 에 사용 할 기본 MIME - type 입 니 다.
  • charset 가 header 에 지 니 고 있 는 기본 문자 집합 을 설정 합 니 다.
  • gzip 설정 nginx 는 보 낸 데 이 터 를 gzip 압축 합 니 다.
  • gzip_disable 는 특정한 클 라 이언 트 에 대해 gzip 압축 을 사용 하지 않 습 니 다.예 를 들 어 gzipdisable "msie6"; IE6 에 대해 gzip 을 하지 않 는 다 는 뜻 입 니 다.
  • gzip_static 는 nginx 에 게 자원 을 gzip 압축 하기 전에 이름 을 통 해 미리 압축 된 자원 이 있 는 지 확인 하 라 고 알려 줍 니 다.이것 은 요청 할 때 gzip 압축 을 실행 하지 않 고 높 은 압축 비 알고리즘 을 사용 하여 사전에 압축 할 수 있 도록 합 니 다.
  • gzip_proxied allows or disallows compression of a response based on the request/response. We’ll set it to any, so we gzip all requests.
  • gzip_min_length 설정 gzip 압축 시 데이터 크기 의 바이트 수 하한 선 입 니 다.예 를 들 어 gzipmin_length 1000; 요청 한 크기 가 1000 바이트 보다 낮 으 면 gzip 로 압축 하지 않 습 니 다. 왜냐하면 gzip 압축 은 요청 처리 프로 세 스 를 늦 출 수 있 기 때 문 입 니 다.
  • gzip_comp_level 에서 gzip 압축 단 계 를 설정 합 니 다.등급 범 위 는 1 ~ 9 이 고 그 중에서 9 는 최고 압축 등급 이지 만 가장 느리다.보통 중간 값 4 를 설정 하 는 것 이 좋 습 니 다.
  • gzip_type 설정 은 데이터 형식 에 대해 gzip 압축 을 진행 합 니 다.예 를 들 어
  • gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  • open_file_cache 는 파일 캐 시 를 사용 합 니 다. 이 캐 시 에 저장 할 요소 의 최대 갯 수 와 도태 시간 을 지정 할 수 있 습 니 다.
  • open_file_cache_valid 는 캐 시 에 있 는 요소 의 유효성 을 검사 하 는 빈 도 를 설정 합 니 다.
  • open_file_cache_min_uses 와 openfile_cache 의 inactive 매개 변 수 를 배합 하여 사용 합 니 다.inactive 지정 시간 내 에 방문 횟수 가 open 을 초과 하면file_cache_min_uses 가 지정 한 값 은 캐 시 를 탈락 시 키 지 않 습 니 다.
  • open_file_cache_errors 는 캐 시 를 열 고 파일 의 잘못된 정 보 를 찾 을 지 설정 합 니 다.
  • user www-data;
    pid /var/run/nginx.pid;
    worker_processes auto;
    worker_rlimit_nofile 100000;
    
    events {
        worker_connections 2048;
        multi_accept on;
        use epoll;
    }
    
    http {
        server_tokens off;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
    
        access_log off;
        error_log /var/log/nginx/error.log crit;
    
        keepalive_timeout 10;
        client_header_timeout 10;
        client_body_timeout 10;
        reset_timedout_connection on;
        send_timeout 10;
    
        limit_conn_zone $binary_remote_addr zone=addr:5m;
        limit_conn addr 100;
    
        include /etc/nginx/mime.types;
        default_type text/html;
        charset UTF-8;
    
        gzip on;
        gzip_disable "msie6";
        gzip_proxied any;
        gzip_min_length 1000;
        gzip_comp_level 6;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    
        open_file_cache max=100000 inactive=20s; 
        open_file_cache_valid 30s; 
        open_file_cache_min_uses 2;
        open_file_cache_errors on;
    
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
    }

    좋은 웹페이지 즐겨찾기