>운영 및 유지보수 >엔진스 >nginx 페이지 캐시를 구성하는 방법

nginx 페이지 캐시를 구성하는 방법

WBOY
WBOY앞으로
2023-05-30 19:13:303045검색

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

4. 구성 파일을 다시 로드합니다.

[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. 캐시 변수 설명 nginx 페이지 캐시를 구성하는 방법

$server_addr

서버 주소, 시스템 호출을 우회하려면 이 값을 지정해야 합니다.

$upstream_cache_status

버전 0.8.3에서 그 값은 다음과 같습니다:


miss Miss

    expired - 만료됨. 요청이 백엔드로 전송됩니다.
  • 업데이트 중 - 만료되었습니다. Proxy/fastcgi_cache_use_stale이 업데이트 중이므로 이전 버전의 응답이 사용됩니다.
  • 오래됨 - 만료되었습니다. Proxy/fastcgi_cache_use_stale을 사용하면 백엔드가 오래된 응답을 받습니다.
  • hit
  • [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;
        }
    }
  • 7. 구성 파일을 다시 로드하세요
  • [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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제