Игнорировать определенные URL-адреса в Varnish Cache

Игнорировать определенные URL-адреса в Varnish Cache

Я бы хотел, чтобы Varnish полностью игнорировал определенные URL-адреса на моих веб-сайтах.

То есть, www.site1.com/fileuploader и www.site2.com/fileuploader

У меня есть 4 веб-сайта на одном VCL, и все эти веб-сайты используют одну и ту же структуру URL-адресов, поэтому единственное, что меняется, — это сам домен; URL-адреса, которые Varnish должен игнорировать, остаются теми же.

Я пробовал:

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когда был сделан запрос на этот ресурс, если режим конвейера не сработал?

Связанный контент