
Ich möchte, dass Varnish bestimmte URLs auf meinen Websites vollständig ignoriert.
D. h. www.site1.com/fileuploader und www.site2.com/fileuploader
Ich habe 4 Websites auf derselben VCL, und alle diese Websites verwenden dieselbe URL-Struktur. Das Einzige, was sich ändert, ist also die Domäne selbst. Die URLs, die Varnish ignorieren soll, sind dieselben.
Ich habe es versucht:
sub vcl_recv {
if (req.url ~ "^/fileuploader/\?"
) {
return(pipe);
}
}
Aber es funktioniert nicht. Beim Versuch, eine PDF-Datei darüber herunterzuladen, wird mir der Fehler Varnish 503 Unavailable angezeigt (derselbe Fehler, den ich hätte, wenn ich die Konfiguration nicht geändert hätte). Wenn ich direkt über nginx dessen Port verwende, läuft der Download problemlos.
Hier ist das Lackprotokoll für diesen Vorfall:
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
Antwort1
Wenn Sie es absolut unberührt von Varnish weitergeben möchten, ist die beste Option return(pipe);
, die Varnish grundsätzlich anweist, für die Dauer der Verbindung als einfacher TCP-Proxy zu fungieren.
Aber die Tatsache, dass Sie eine 503
Antwort erhalten haben, scheint darauf hinzudeuten, dass etwas anderes nicht stimmt. Können Sie die Ausgabe bereitstellen, varnishlog
wenn eine Anforderung für diese Ressource gestellt wird, falls der Pipe-Modus nicht funktioniert?