대상 방문자끼리 공유해도 되는 응답만 캐시합니다. 공개 상품 설명과 로그인한 고객의 계정 페이지는 요구사항이 다릅니다.
유출이 발생하는 과정 살펴보기
Alice가 /account를 요청하고 Nginx가 그 URL로 응답을 저장한다고 가정합니다. 이후 Bob이 같은 캐시 응답을 받으면 Alice의 데이터를 보게 됩니다. 비공개 결과에 공유 캐시를 사용한 것이 문제입니다.
명시적으로 공개된 라우트부터 시작합니다. 저장된 응답을 식별하는 cache key는 호스트, 경로, 쿼리, 언어 등 관련 변형을 구별해야 합니다.
비공개 라우트에서는 읽기와 저장을 모두 제어하기
다른 곳에 proxy cache가 구성된 server 안에서 전용 비공개 location에 다음을 넣을 수 있습니다.
nginx
location /account/ {
proxy_pass http://127.0.0.1:3000;
proxy_cache_bypass 1;
proxy_no_cache 1;
}
는 공유 캐시 응답을 읽지 못하게 합니다. 는 새 응답을 저장하지 못하게 합니다. 이 예는 접두사를 보호합니다. 다른 비공개 라우트와 경쟁하는 location도 점검해야 합니다.
