
Gostaria que o Varnish ignorasse completamente certos URLs em meus sites.
Ou seja, www.site1.com/fileuploader e www.site2.com/fileuploader
Eu tenho 4 sites na mesma VCL, e todos esses sites estão usando a mesma estrutura de URL, então a única coisa que muda é o próprio domínio, os URLs que quero que o Varnish ignore são os mesmos.
Eu tentei:
sub vcl_recv {
if (req.url ~ "^/fileuploader/\?"
) {
return(pipe);
}
}
Mas não funciona. Ao tentar baixar um PDF através dele, recebo um erro Varnish 503 Unavailable (o mesmo erro que tenho se não alterei a configuração). Se eu passar pelo nginx diretamente usando sua porta, o download será correto.
Aqui está o verniz para este incidente:
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
Responder1
Se você quiser passar absolutamente intocado pelo Varnish, então a melhor opção é return(pipe);
, que basicamente diz ao Varnish para agir como um proxy TCP burro durante a conexão.
Mas o fato de você ter recebido uma 503
resposta parece implicar que algo mais está errado - você pode fornecer a saída de varnishlog
quando uma solicitação para esse recurso é feita, se o modo pipe não funcionar?