nginx 페이지 캐시
1. 지침 설명
proxy_cache_path
구문: Proxy_cache_path 경로 [레벨=번호] key_zone=zone_name:zone_size [inactive=time] [max_size=size]
기본값: 없음
사용 필드: http
지시문은 캐시 경로 및 기타 매개변수를 지정합니다. 캐시된 데이터는 파일에 저장되며 프록시 URL의 해시 값은 키와 파일 이름으로 사용됩니다. level 매개변수는 캐시된 하위 디렉터리 수를 지정합니다. 예:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
파일 이름은 다음과 유사합니다.
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
levels는 디렉터리 구조로 x와 같이 1자리 또는 2자리 숫자를 사용할 수 있습니다. x:x 또는 x :x:x 예를 들어 "2", "2:2", "1:1:2"이지만 최대 세 번째 수준 디렉터리만 될 수 있습니다.
모든 활성 키와 메타데이터는 공유 메모리 풀에 저장됩니다. 이 영역은keys_zone 매개변수로 지정됩니다. 1은 공유 풀의 이름을 나타내고, 10m은 공유 풀의 크기를 나타냅니다.
정의된 각 메모리 풀에는 고유한 경로가 있어야 합니다. 예:
proxy_cache_path /data/nginx/cache/one levels=1 keys_zone=one:10m; proxy_cache_path /data/nginx/cache/two levels=2:2 keys_zone=two:100m; proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;
캐시된 데이터가 inactive 매개변수로 지정된 시간 내에 요청되지 않으면 삭제됩니다. 기본 비활성은 10분입니다. 캐시 관리자라는 프로세스는 비활성 캐시를 삭제하고 캐시 크기를 제어하는 데 사용됩니다. 이는 max_size 매개변수에 정의되어 있으며, 이는 max_size에 지정된 값을 초과하는 것입니다. . 마지막으로 가장 적게 사용된 데이터(LRU 교체 알고리즘)가 삭제됩니다. 메모리 풀의 크기는 캐시된 페이지 수에 비례하여 설정됩니다. 페이지(파일)의 메타데이터 크기는 운영 체제에 따라 결정됩니다. 예를 들어 freebsd/i386에서는 64바이트, freebsd/에서는 128바이트입니다. amd64.
proxy_cache
구문: Proxy_cache zone_name;
기본값: 없음
사용 필드: http, 서버, 위치
캐시 영역의 이름을 설정하세요. 동일한 영역이 서로 다를 수 있습니다. 현지 사용.
0.7.48 이후에는 백엔드의 "expires", "cache-control: no-cache", "cache-control: max-age=xxx" 헤더 필드를 따릅니다. 캐시 -control: "private" 및 "no-store" 헤더도 존중됩니다. nginx는 캐시 프로세스 중에 일부 개인 데이터가 모든 사용자에게 표시되지 않도록 하기 위해 "vary" 헤더를 처리하지 않습니다. "no-cache" 또는 "max-age=0" 헤더를 설정하거나, Proxy_cache_key에 $cookie_xxx와 같은 사용자 지정 데이터가 포함되어 있습니다. Proxy_cache_key의 일부로 쿠키 값을 사용하면 개인 데이터가 캐시되는 것을 방지할 수 있으므로 Proxy_cache_key를 지정할 수 있습니다.
캐시 지침은 프록시 버퍼(버퍼)에 의존합니다. Proxy_buffers가 꺼짐으로 설정되면 캐시가 적용되지 않습니다.
구문: reply_code [reply_code …] time;
기본값: 없음
사용 필드: http, 서버, 위치
다른 응답에 대해 다른 캐시 시간을 설정합니다. 예:
proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;캐시 시간을 10분으로 설정 응답 코드 200 및 302, 404 코드는 1분 동안 캐시됩니다.
시간만 정의하면
proxy_cache_valid 5m;, 코드 200, 301 및 302가 포함된 응답만 캐시될 수 있습니다.
proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m;
2. 간단한 nginx 캐시 서버
[root@nginx ~]# vim /etc/nginx/nginx.conf proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://webservers; proxy_set_header x-real-ip $remote_addr; proxy_cache webserver; proxy_cache_valid 200 10m; } }3. 새 캐시 디렉토리를 생성합니다
[root@nginx ~]# mkdir -pv /data/nginx/cache/webserver
[root@nginx webserver]# service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 重新载入 nginx: [确定]
5. 테스트해 보겠습니다(Google Chrome)
테스트할 때는 모두 Google 브라우저를 사용합니다. 서버에서 f12를 눌러 개발 도구를 호출하고 네트워크 옵션을 선택할 수 있습니다. 여기서 우리가 요청하는 것이 캐시인지 확인할 수 있지만 아직은 볼 수 없습니다.
6. 캐시 변수 설명
$server_addr
서버 주소, 시스템 호출을 우회하려면 이 값을 지정해야 합니다.
$upstream_cache_status
버전 0.8.3에서 그 값은 다음과 같습니다:
miss Miss
[root@nginx ~]# vim /etc/nginx/nginx.conf proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #增加两头部 add_header x-via $server_addr; add_header x-cache $upstream_cache_status; location / { proxy_pass http://webservers; proxy_set_header x-real-ip $remote_addr; proxy_cache webserver; proxy_cache_valid 200 10m; } }
[root@nginx ~]# service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 重新载入 nginx: [确定]
8. 테스트해 보세요
注,从图中我们可以看到,我们访问的服务器是192.168.18.208,缓存命中。大家可以看到是不是很直观啊。下面我们看一下缓存目录。
9.查看一下缓存目录
[root@nginx ~]# cd /data/nginx/cache/webserver/f/63/ [root@nginx 63]# ls 681ad4c77694b65d61c9985553a2763f
注,缓存目录里确实有缓存文件。
위 내용은 nginx 페이지 캐시를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!