
我希望 Varnish 完全忽略我網站上的某些 URL。
即 www.site1.com/fileuploader 和 www.site2.com/fileuploader
我在同一個 VCL 上有 4 個網站,所有這些網站都使用相同的 URL 結構,因此唯一改變的是網域本身,我希望 Varnish 忽略的 URL 是相同的。
我試過了:
sub vcl_recv {
if (req.url ~ "^/fileuploader/\?"
) {
return(pipe);
}
}
但這不起作用。當嘗試透過它下載 PDF 時,我遇到了 Varnish 503 Unavailable 錯誤(如果我沒有更改配置,也會出現相同的錯誤)。如果我直接使用 nginx 的端口,它下載得很好。
這是此事件的清漆日誌:
16 ObjHeader - Server: nginx/1.2.7
16 ObjHeader - Date: Wed, 17 Apr 2013 11:03:40 GMT
16 ObjHeader - Content-Type: application/pdf
16 ObjHeader - Content-Length: 1078550
16 ObjHeader - X-Powered-By: PHP/5.3.23-1~dotdeb.0
16 ObjHeader - Expires: Thu, 19 Nov 1981 08:52:00 GMT
16 ObjHeader - Set-Cookie: frontend=74go8sgckma5qrobnqc36pcjd4; expires=Wed, 17-Apr-2013 12:03:40 GMT; path=/; domain=www.site1.com; httponly
16 ObjHeader - Pragma: public
16 ObjHeader - Cache-Control: must-revalidate, post-check=0, pre-check=0
16 ObjHeader - Content-Disposition: attachment; filename=File-1338990998.pdf
16 ObjHeader - Content-Encoding: gzip
16 ObjHeader - Vary: Accept-Encoding
30 FetchError - Resource temporarily unavailable
16 FetchError - straight insufficient bytes
答案1
如果你想完全不被 Varnish 影響地傳遞它,那麼最好的選擇是return(pipe);
,它基本上告訴 Varnish 在連接期間充當啞 TCP 代理。
但您得到回應的事實似乎意味著其他問題是錯誤的 -如果管道模式不起作用,503
您能否提供對該資源的請求時的輸出?varnishlog