이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 2246|회답: 0

[웹] Nginx의 웹 리소스 캐싱(CDN)

[링크 복사]
게시됨 2024. 7. 17. 오후 10:10:31 | | | |
웹 캐싱에 대해 이야기하기 전에, CDN에 대해 이야기해 보겠습니다. 콘텐츠 전달 네트워크(CDN)는 베어러 네트워크 위에 구축되고 커버되는 분산 네트워크로, 전 세계에 위치한 엣지 노드 서버 플릿으로 구성되어 있습니다. CDN은 출발지 서버에 가해지는 부담을 분담하고, 네트워크 혼잡을 방지하며, 다양한 지역과 시나리오에서 웹사이트 콘텐츠를 분산시키고, 자원 접근 속도를 향상시킬 수 있습니다. CDN은 전 세계 IDC의 가속 노드에 오리진 서버 자원을 캐시하여, 최종 사용자가 오리진 서버 자원에 접근을 요청하고 받을 때 인근 CDN 노드의 캐시 자원을 확보하고 자원 접근 속도를 향상시키며 오리진 서버에 대한 부담을 분산할 수 있습니다.

아래 그림에서 볼 수 있듯이:



간단히 말해, 사용자가 일부 정적 자원에 접근할 때, CDN을 사용한 후 원본 서버에서 해당 리소스를 얻는 것이 아니라, 계산과 반환 데이터를 통해 현재 사용자에게 가장 가까운 CDN 서비스를 찾게 됩니다.

웹 캐싱 값은 사용자와 원본 서버 간의 서비스이며, Nginx는 웹 캐싱 기능을 네이티브로 제공합니다. 그 외에도 Varnish, Squid, Cachewall이 있는데, 이들은 웹 캐싱 프록시입니다(일부는 단순히 웹 캐싱만 제공하는 것이 아닙니다).

Nginx 캐시 구성 문서에 대하여:하이퍼링크 로그인이 보입니다.

먼저, 캐싱 서비스를 통해 자원에 처음 접근할 때 캐시 상태는 다음과 같습니다미스아래 그림과 같이 원본 서버에 이를 요청할 것입니다:



두 번째로 리소스에 접근할 때, 리소스가 캐시되어 있고 상태는 다음과 같습니다치다, 아래 그림에서 볼 수 있습니다:



Nginx의 주요 구성 매개변수는 다음과 같습니다:

주요 기준:

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

●path: 캐시된 파일의 저장 경로를 지정하는 필수 매개변수입니다.
●levels: 캐시 디렉터리의 계층 구조를 정의합니다. 각 계층은 1(최대 16선택지, 0-f) 또는 2(최대 256선택지, 00-ff)로 표현할 수 있으며, 중간에 : 로 구분됩니다.
proxy_cache_path /data/nginx/cache;  즉, 모든 캐시는 /data/nginx/cache/d7b6e5978e3f042f52e875005925e51b 같은 하나의 디렉터리만 가집니다
proxy_cache_path /data/nginx/cache 레벨=1:2;  즉, 캐시는 2차 디렉터리(16*256=4096개의 디렉터리)로, 예를 들어 /data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
● keys_zone: 필수 매개변수, 공유 메모리 영역의 이름과 크기를 정의하며, 이는 캐시 항목의 메타데이터(모든 활성 키 및 캐시 데이터 관련 정보)를 저장하는 데 사용됩니다. 이를 통해 nginx가 요청이 캐시에 맞는지 실패하는지 빠르게 판단할 수 있습니다. 1m 요청은 8000 키를 저장할 수 있고, 10m 은 80,000 키를 저장할 수 있으며, 10m 사용자는 80,000 키를 저장할 수 있습니다.
●비활성: 지정된 시간 내에 접근하지 않은 캐시 파일을 삭제하며, 기본값은 10분간 유지됩니다.
●max_size: 캐시 저장 용량의 상한선이 설정되어 있으며, 지정하지 않으면 모든 디스크 공간이 최대 사용된다.
● use_temp_path: 임시 파일을 캐시 디렉터리에 직접 배치하세요.


proxy_cachemy_cache;      #指定用于页面缓存的共享内存, 구역 이름은 proxy_cache_path 지침에 의해 정의됩니다
proxy_cache_min_uses1;   ##는 캐싱 임계값, 요청이 몇 번 캐시되는지 규정하며, 낭비를 피하기 위해 저빈도 요청을 캐시하지 않습니다.
proxy_cache_valid200 3m;  #为不同的响应状态码设置不同的缓存时间, 이 요청은 캐시 상태 코드 200이고 캐시 지속 시간은 3분입니다
proxy_cache_key$request_uri; #指定缓存文件的key为请求的URI
add_headerNginx-캐시-상태 $upstream_cache_status;  #把缓存状态设置为头部信息, 클라이언트에게 응답하세요
proxy_passhttp://webservers;  #设置代理转发的后端服务器的协议和地址

Nginx 캐싱 프록시를 사용해 쿼리 문자열을 무시하세요

(끝)




이전의:dotnet-ef 도구를 사용해 롤백 스크립트를 생성하세요
다음:Curl을 사용해 테스트 사이트의 HTTP/3 지원을 확인하세요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com