Nginx가 HTTP 요청에 대한 캐시 제어 구성을 구현하는 방법

WBOY
풀어 주다: 2023-11-08 09:35:23
원래의
1542명이 탐색했습니다.

Nginx가 HTTP 요청에 대한 캐시 제어 구성을 구현하는 방법

Nginx가 HTTP 요청의 캐시 제어 구성을 구현하는 방법

Nginx는 고성능 웹 서버이자 역방향 프록시 서버로서 강력한 캐시 관리 및 제어 기능을 갖추고 있으며 구성을 통해 HTTP 요청의 캐시 제어를 달성할 수 있습니다. 이 기사에서는 Nginx가 HTTP 요청에 대한 캐시 제어 구성을 구현하는 방법을 자세히 소개하고 특정 코드 예제를 제공합니다.

1. Nginx 캐시 구성 개요
Nginx 캐시 구성은 주로 Proxy_cache 모듈을 통해 구현됩니다. 이 모듈은 캐시 동작을 효과적으로 제어할 수 있는 풍부한 명령과 매개변수를 제공합니다. 캐시를 구성하기 전에 Nginx 구성 파일에서 Proxy_cache 모듈을 로드해야 합니다. 구체적인 지침은 다음과 같습니다.

load_module modules/ngx_http_proxy_module.so;
로그인 후 복사

이 지침은 구성 파일에서 관련 캐시 제어 지침을 사용할 수 있도록 Nginx Proxy_cache 모듈을 로드합니다.

2. 캐시 제어 지침에 대한 자세한 설명

  1. proxy_cache_path

proxy_cache_path 지시어는 캐시 저장 경로, 캐시 크기, 캐시 전략 등과 같은 캐시 경로 및 관련 구성 매개변수를 정의하는 데 사용됩니다. 구체적인 사용법은 다음과 같습니다.

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g
               inactive=60m use_temp_path=off;
로그인 후 복사

이 예에서는 my_cache라는 캐시 영역을 정의하고, 캐시 경로는 /data/nginx/cache이며, 최대 캐시 크기는 10GB, 캐시 만료 시간은 60분입니다. 실제 필요에 따라 구성 매개변수를 조정해야 한다는 점에 유의해야 합니다.

  1. proxy_cache

proxy_cache 지시어는 캐싱을 활성화하고 사용되는 캐시 영역을 설정하는 데 사용됩니다. 이는 위치 블록에서 구성할 수 있습니다. 예:

location / {
    proxy_cache my_cache;
    proxy_cache_valid 200 304 5m;
    proxy_cache_valid 301 302 1h;
    proxy_cache_key $host$uri$is_args$args;
    proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
    proxy_cache_background_update on;
    proxy_cache_lock on;
    proxy_cache_lock_timeout 5s;
    proxy_cache_revalidate on;
    proxy_cache_min_uses 3;
    proxy_cache_bypass $http_x_token;
    proxy_cache_methods GET HEAD;
}
로그인 후 복사

위 구성에서는 my_cache라는 캐시 영역을 활성화했습니다. 캐시 유효 시간, 캐시 키, 캐시 업데이트 전략 및 다양한 응답 상태 코드의 기타 매개변수가 설정됩니다. 이러한 매개변수는 특정 캐싱 요구 사항에 따라 유연하게 구성할 수 있습니다.

  1. proxy_ignore_headers

proxy_ignore_headers 지시문은 Nginx가 캐싱할 때 무시해야 하는 HTTP 응답 헤더를 지정하는 데 사용됩니다. 예:

proxy_ignore_headers Cache-Control Set-Cookie;
로그인 후 복사

이 예에서는 Nginx에 헤더 캐싱 시 Cache-Control 및 Set-Cookie 응답을 무시하도록 요청합니다. 캐시 일관성과 유효성을 보장합니다.

  1. proxy_cache_lock

proxy_cache_lock 지시문은 캐시 콘텐츠에 대한 동시 액세스를 제어하는 ​​데 사용됩니다. 이를 통해 캐시 고장, 눈사태 및 다음과 같은 기타 문제를 효과적으로 방지할 수 있습니다.

proxy_cache_lock on;
proxy_cache_lock_timeout 5s;
로그인 후 복사

이 예에서는 캐시 잠금을 활성화하고 5를 설정합니다. 요청이 캐시된 콘텐츠를 업데이트하기 위해 백엔드 서버에 계속 액세스하는 시간 초과(초)입니다.

3. 코드 예제
위의 캐시 제어 지침을 기반으로 HTTP 요청의 캐시 제어를 구현하는 완전한 Nginx 구성 예제를 작성할 수 있습니다. 다음은 간단한 Nginx 구성 예입니다.

load_module modules/ngx_http_proxy_module.so;

http {
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g
               inactive=60m use_temp_path=off;

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend_server;
            proxy_cache my_cache;
            proxy_cache_valid 200 304 5m;
            proxy_cache_valid 301 302 1h;
            proxy_cache_key $host$uri$is_args$args;
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
            proxy_cache_background_update on;
            proxy_cache_lock on;
            proxy_cache_lock_timeout 5s;
            proxy_cache_revalidate on;
            proxy_cache_min_uses 3;
            proxy_cache_bypass $http_x_token;
            proxy_cache_methods GET HEAD;
            proxy_ignore_headers Cache-Control Set-Cookie;
        }
    }
}
로그인 후 복사

위 예에서는 먼저 ngx_http_proxy_module 모듈을 로드한 다음 my_cache라는 캐시 영역을 정의하고 서버 블록에 프록시 위치를 구성하고 캐싱 및 해당 캐시 제어 명령을 활성화했습니다. . 사용자가 example.com을 방문하면 Nginx는 구성된 캐시 규칙에 따라 캐시 관리 및 제어를 수행합니다.

IV. 요약
위의 소개와 예제를 통해 Nginx가 HTTP 요청에 대한 캐시 제어 구성을 구현하는 방법과 Proxy_cache 모듈에서 제공하는 관련 지침에 대한 자세한 설명 및 데모를 살펴보았습니다. 합리적인 캐시 구성은 웹 사이트의 액세스 속도와 성능을 크게 향상시키고, 백엔드 서버에 대한 부담을 줄이고, 더 나은 사용자 경험을 달성할 수 있습니다. 따라서 실제 웹 애플리케이션 개발에서는 Nginx의 캐시 제어 기능을 적절하게 사용하는 것이 매우 중요합니다.

위 내용은 Nginx가 HTTP 요청에 대한 캐시 제어 구성을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿