Nginx 콘 텐 츠 캐 시 및 일반적인 매개 변수 설정

5801 단어 nginxphp캐 시
하 효 동 블 로그
장면 사용:프로젝트 의 페이지 는 많은 데 이 터 를 불 러 와 야 합 니 다.자주 변 하 는 것 도 아 닙 니 다.맞 춤 형 맞 춤 형 제작 과 관련 되 지 않 고 매번 요청 할 때마다 동적 으로 데 이 터 를 생 성 합 니 다.성능 은 요청 경로 와 매개 변수 에 따라 캐 시 한 결과 보다 못 합 니 다.Nginx 캐 시 를 사용 하면 요청 속 도 를 대폭 향상 시 킵 니 다.
기초proxy_cache_pathproxy_cache 만 설정 하면 콘 텐 츠 캐 시 를 열 수 있 습 니 다.전 자 는 캐 시 경로 와 설정 을 설정 하고 후 자 는 캐 시 를 사용 합 니 다.
http {
    ...
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

    server {
        proxy_cache mycache;
        location / {
            proxy_pass http://localhost:8000;
        }
    }
}

대응 하 는 매개 변수 설명:1.캐 시 에 사용 할 로 컬 디스크 디 렉 터 리 는/path/to/cache/
2.levels 는/path/to/cache/에 2 단계 구조의 디 렉 터 리 를 설정 합 니 다.대량의 파일 을 하나의 디 렉 터 리 에 배치 하면 파일 접근 이 느 릴 수 있 기 때문에 대부분의 배치 에 대해 저 희 는 2 급 디 렉 터 리 계층 구 조 를 사용 하 는 것 을 추천 합 니 다.levels 인자 가 설정 되 어 있 지 않 으 면 NGINX 는 모든 파일 을 같은 디 렉 터 리 에 저장 합 니 다.
3.keys_zone 은 공유 메모리 구역 을 설정 합 니 다.이 메모리 구역 은 캐 시 키 와 메타 데 이 터 를 저장 하 는 데 사 용 됩 니 다.타이머 와 유사 한 용도 가 있 습 니 다.키 의 복사 본 을 메모리 에 넣 으 면 NGINX 가 디스크 를 검색 하지 않 은 상태 에서 요청 이 HIT 인지 MISS 인지 빠르게 결정 하여 검색 속 도 를 크게 높 일 수 있다.1MB 의 메모리 공간 은 약 8000 개의 key 를 저장 할 수 있 습 니 다.그러면 위 에 설 치 된 10MB 메모리 공간 은 80000 개의 key 를 저장 할 수 있 습 니 다.
4.max_size 는 캐 시 상한 선 을 설정 합 니 다(위의 예 에서 10G).이것 은 옵션 입 니 다.구체 적 인 값 을 지정 하지 않 으 면 캐 시가 계속 증가 하고 사용 가능 한 모든 디스크 공간 을 차지 할 수 있 도록 하 는 것 입 니 다.캐 시가 이 상위 권 에 이 르 렀 을 때,프로 세 서 는 캐 시 관리 자 를 호출 하여 최근 에 가장 적 게 사 용 된 파일 을 제거 합 니 다.이렇게 하면 캐 시 공간 을 이 제한 아래로 낮 출 수 있 습 니 다.
5.inactive 는 항목 이 접근 하지 않 은 상태 에서 메모리 에 유지 할 수 있 는 시간 을 지정 합 니 다.위의 예 에서 한 파일 이 60 분 안에 요청 되 지 않 으 면 캐 시 관 리 는 이 파일 이 만 료 되 었 든 안 되 었 든 메모리 에서 자동 으로 삭 제 됩 니 다.이 매개 변 수 는 기본 값 이 10 분(10m)입 니 다.비 활동 내용 은 기한 이 지난 내용 과 다 르 니 주의 하 세 요.NGINX 는 캐 시 제어 헤드 에서 지정 한 만 료 된 내용 을 자동 으로 삭제 하지 않 습 니 다(이 예 에서 Cache-Control:max-age=120).만 료 된 내용 은 inactive 가 지정 한 시간 내 에 접근 하지 않 은 경우 에 만 삭 제 됩 니 다.만 료 된 콘 텐 츠 가 접근 하면 NGINX 는 기 존 서버 에서 새로 고침 하고 이에 대응 하 는 inactive 타 이 머 를 업데이트 한다.
6.NGINX 는 캐 시 에 기 록 될 파일 을 임시 저장 영역 에 먼저 넣 습 니 다.usetemp_path=off 명령 은 NGINX 가 이 파일 들 을 캐 시 할 때 같은 디 렉 터 리 에 기록 하도록 지시 합 니 다.파일 시스템 에서 불필요 한 데 이 터 를 복사 하지 않도록 파 라 메 터 를 off 로 설정 하 는 것 을 강력 히 권장 합 니 다.use_temp_path 는 NGINX 1.7 버 전과 NGINX Plus R6 에 소개 됐다.
결국,proxycache 명령 은 URL 이 location 부분 과 일치 하 는 내용 을 캐 시 합 니 다(이 예 는 /).당신 역시 proxycache 명령 을 server 부분 에 추가 합 니 다.캐 시 를 모든 location 에서 지정 되 지 않 은 proxy 에 적용 합 니 다.cache 명령 서비스 에서
Nginx 캐 시 관련 프로 세 스
캐 시 에는 두 개의 추가 NGINX 프로 세 스 가 포함 되 어 있 습 니 다.
  • cache manager 가 주기 적 으로 시작 하여 캐 시 상 태 를 검사 합 니 다.캐 시 크기 가 proxy 를 초과 하면cache_path 중 maxsize 매개 변수 설정 의 제한 은 캐 시 관리자 가 최근 에 방문 한 데 이 터 를 삭제 합 니 다.두 번 의 캐 시 관리자 가 시작 하 는 간격 에서 캐 시 데 이 터 는 설정 의 크기 를 잠시 초과 할 수 있 습 니 다.
  • cache loader 는 한 번 만 실 행 됩 니 다.NGINX 가 시 작 된 후.이전 캐 시 된 데이터 에 대한 메타 데 이 터 를 공유 메모리 영역 에 불 러 옵 니 다.한 번 에 전체 캐 시 를 불 러 오 면 시작 후 처음 몇 분 안에 NGINX 의 성능 을 떨 어 뜨리 기 위해 충분 한 자원 을 소모 할 수 있 습 니 다.이러한 상황 을 피 하려 면 proxy 를 통 해cache_path 명령 에는 캐 시 교체 로드 를 설정 하기 위해 다음 매개 변 수 를 포함 합 니 다:
  • loader_threshold-교체 지속 시간,밀리초 단위(기본 값 200)
  • loader_files-1 차 교체 기간 에 불 러 오 는 최대 항목 수(기본 값 100)
  • loader_sleeps-교체 간 지연,밀리초 단위(기본 값 50)

  • 다음 예제 에서 교체 지속 수 300 밀리초 또는 200 개 항목 이 불 러 올 때 까지:
    proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;

    기타 상용 매개 변수
    설정 예시:
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
    
    server {
        ...
        location / {
            proxy_cache my_cache;
            # proxy_cache_key "$host$request_uri$cookie_user";
            proxy_cache_min_uses 3;
            proxy_cache_methods GET HEAD POST;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404      1m;
            # proxy_cache_valid any 5m;
            proxy_pass http://localhost:8000;
        }
    }

    대응 하 는 매개 변수 설명:proxy_cache_key 은 키 를 계산 할 때 사용 하 는 요청 특징 을 변경 하기 위해 캐 시 키 를 지정 합 니 다.이것 은 추천 하지 않 습 니 다.예 를 들 어 도 메 인 이름,url 요청,사용자 쿠키 를 key 로 사용 하 는 것 은 한 페이지 가 서로 다른 사용자 에 게 n 번 캐 시 되 는 것 을 의미 합 니 다.절대 다수의 경우 이러한 조작 이 필요 하지 않 습 니 다.proxy_cache_min_uses 은 캐 시 응답 전에 같은 키 를 사용 해 야 하 는 요청 의 최소 횟수 입 니 다.proxy_cache_methods 은 캐 시 할 요청 방식 의 응답 값 을 지정 합 니 다.기본 값 은 GET 와 HEAD 입 니 다.상기 예시 와 같이 다른 필요 사항 을 추가 합 니 다.proxy_cache_valid 은 상태 코드 에 응답 하 는 캐 시 시간 입 니 다.예 를 들 어 모든 상태 코드 캐 시 에 시간 을 지정 할 수도 있 고 any 를 사용 하여 모든 상태 코드 의 캐 시 를 할 수도 있 습 니 다.
    캐 시 지우 기
    HTTP PURGE 방법 을 사용 하 는 요청 을 표시 하고 일치 하 는 URL 에 해당 하 는 캐 시 를 삭제 하 는 설정 을 미리 추가 해 야 합 니 다.1.http {} 컨 텍스트 에서 새로운 변 수 를 만 듭 니 다.예 를 들 어 $purge_method.그 는 $request_method 변수 에 의존 합 니 다.
    http {
        ...
        map $request_method $purge_method {
            PURGE 1;
            default 0;
        }
    }

    2.location {} 블록 에서 캐 시 를 설정 한 전제 에서 proxy_cache_purge 파 라 메 터 를 도입 하여 캐 시 제거 요청 조건 을 지정 합 니 다.예 를 들 어 지난 단계 에 지 정 된 $request_method
    server {
        listen      80;
        server_name www.example.com;
    
        location / {
            proxy_pass  https://localhost:8002;
            proxy_cache mycache;
    
            proxy_cache_purge $purge_method;
        }
    }

    설정 이 완료 되 고 효력 이 발생 하면 캐 시 를 무효 화 할 수 있 는 Purge 요청 을 보 낼 수 있 습 니 다.예 를 들 어:
    curl -X PURGE -D – "https://www.example.com/*"

    이 예제 에 서 는 공통 URL 부분(별표 어댑터 로 지정)이 있 는 자원 을 삭제 합 니 다.그러나 이 캐 시 항목 들 은 캐 시 에서 완전히 삭제 되 지 않 습 니 다.디스크 에 남아 있 습 니 다.비활성(proxy_cache_pathinactive 매개 변수 에 의 해 결 정 됨)으로 간주 되 거나 클 라 이언 트 가 접근 을 시도 할 때 까지.
    참조 링크:
  • Nginx 캐 시 사용 공식 지침
  • Nginx 콘 텐 츠 캐 시 문서
  • 더 많은 글 이 개인 블 로그 에 업 데 이 트 될 것 이다.

    좋은 웹페이지 즐겨찾기