
일반적인 상황에서 proxy_cache_bypass
nginx를 사용하면 업스트림에서 새로운 복사본을 가져오고 캐시된 응답을 새 응답으로 덮어씁니다.
그러나 URL이 캐시 가능한 응답에서 캐시할 수 없는 응답으로 변경되면(예: 를 사용한 4xx 응답 Cache-Control: no-cache
) 를 사용하면 proxy_cache_bypass
실제로 업스트림에서 새로운 복사본이 제공되지만 이전 복사본은 캐시에 남게 됩니다.
즉, 트리거하지 않고 URL을 요청할 때마다 proxy_cache_bypass
이전 캐시를 계속 제공합니다.
나는 이것이 의도된 행동이라고 생각합니다 proxy_cache_bypass
.덮어쓰기새 응답을 저장하여 캐시된 응답이 있는데, no-cache
응답은 저장할 것이 없다는 의미입니까? 이게 무슨 일이야?
이 문제를 어떻게 해결할 수 있나요? 4xx 응답에 대한 캐싱을 활성화하고 싶지 않습니다...
nginx/1.14.2를 실행 중입니다.
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my-cache:70m max_size=28g inactive=1d;
proxy_temp_path /var/cache/nginx/tmp;
proxy_cache my-cache;
proxy_cache_key $remote_user$scheme$host$request_uri;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504 http_429;
proxy_cache_bypass $http_cache_control;
proxy_read_timeout 90;
add_header X-Cache-Status $upstream_cache_status;
etag off;
답변1
다음을 지정하여 nginx에게 200, 301 및 302 응답만 캐시하도록 지시할 수 있습니다.
proxy_cache_valid 10m;
이는 nginx에게 10분 동안 유효한 응답을 캐시하도록 지시합니다.
답변2
이는 예상되는 동작입니다. 그렇기 때문에 그들은 유료 버전을 사용하여프록시_캐시_퍼지지령