Bestimmte URLs im Varnish Cache ignorieren

Bestimmte URLs im Varnish Cache ignorieren

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 503Antwort erhalten haben, scheint darauf hinzudeuten, dass etwas anderes nicht stimmt. Können Sie die Ausgabe bereitstellen, varnishlogwenn eine Anforderung für diese Ressource gestellt wird, falls der Pipe-Modus nicht funktioniert?

verwandte Informationen