다음을 시도해보십시오.
당신은
built-in VCL의
vcl_recv
가 전혀 실행되지 않도록 당신의
vcl_recv
절차에서
return
문을 호출해야합니다,
OPTIONS
요청 방법이 전혀 캐시 할 수 있는지 확인합니다. 캐시가 원산지 헤더 값에 따라 다른 것으로 들어, 이런 식으로 뭔가를 넣어 것입니다
sub vcl_recv {
if (req.method == "PRI") {
/* We do not support SPDY or HTTP/2.0 */
return (synth(405));
}
if (req.method != "GET" &&
req.method != "HEAD" &&
req.method != "PUT" &&
req.method != "POST" &&
req.method != "TRACE" &&
req.method != "DELETE") {
/* Non-RFC2616 or CONNECT which is weird. */
return (pipe);
}
if (req.method != "GET" && req.method != "HEAD" && req.method != "OPTIONS") {
/* We only deal with GET and HEAD by default */
return (pass);
}
if (req.http.Authorization || req.http.Cookie) {
/* Not cacheable by default */
return (pass);
}
if (req.method == "GET" || req.method == "HEAD" || req.method == "OPTIONS") {
set req.http.x-method = req.method;
}
return (hash);
}
sub vcl_backend_fetch {
set bereq.method = bereq.http.x-method;
}
:
sub vcl_hash {
if (req.http.Origin) {
hash_data(req.http.Origin);
}
# no return here in order to have built-in.vcl do its default behavior of also caching host, URL, etc.
}
가 나는 것을 시도했다, 그러나 그것은 가능 캐시 것처럼 보인다 그리고 일부 변경 'OPTIONS' 요청은 어떻게 든'GET' 백엔드 페치로 변환됩니다. 따라서 백엔드를 직접 치는 것과 비교하여 바니시를 통해 요청을하면 헤더가 달라집니다. 어떤 생각? – mana
Varnish는 당신이''''''vcl_recv''를''반환 (해쉬) '할 때 요청을''GET''으로 변환하는 것처럼 보입니다 ... 나는 그것을 우회하는 트릭으로 대답을 업데이트 할 것입니다. . –