2015-12-24 3 views
3

Я пытаюсь отправить запрос BAN через curl на сервер Varnish на недопустимый кешированный контент. URL-адрес содержит некоторое регулярное выражение для лака для проверки. Я был успешно отправки этого запроса:regex issue отправка запроса BAN на сервер Larn через curl

1. curl -X BAN "https://oursite.com/product/item/(100|7|9||8|7|6|5|4|2|1)"

<!DOCTYPE html> 
<html> 
    <head> 
    <title>200 Ban added</title> 
    </head> 
    <body> 
    <h1>Error 200 Ban added</h1> 
    <p>Ban added</p> 
    <h3>Guru Meditation:</h3> 
    <p>XID: 66211</p> 
    <hr> 
    <p>Varnish cache server</p> 
    </body> 
</html> 

, но с более сложной URL

2. curl -X BAN "https://oursite.com/product/(search/home$|item/(391|1232))"

// What I'm trying to remove are: 

1./product/search/home 
2./product/item/391 
3./product/item/1232 

default.vcl

if (req.method == "BAN") { 

     if (!client.ip ~ purge) { 

      return(synth(403, "Not allowed.")); 
     } 

     ban("req.url ~ ^"+req.url); 

     return(synth(200, "Ban added")); 
} 

Varnish журнала:

* << BeReq >> 163855 
- Begin   bereq 163854 pass 
- Timestamp  Start: 1450969228.080453 0.000000 0.000000 
- BereqMethod BAN 
- BereqURL  /product/(search/home$|item/(391|1232)) 
- BereqProtocol HTTP/1.1 
- BereqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2 
- BereqHeader Host: oursite.com 

Завиток запрос был успешно выполнен, как показано на varnishlog, но я не знаю, почему регулярное выражение не работает. Ни одна из страниц не очищается. Может ли кто-нибудь сказать мне, в чем проблема? Какие персонажи мне нужно бежать?

+0

является Подвыражение 'поиск/дома $' означает содержать буквальный знак доллара ИЛИ и «конец-строки» маркер? Это поможет, если вы перечислите отдельно каждый матч, который вы намереваетесь сделать, и укажите, имеются ли какие-либо литературные символы, которые могут быть перепутаны с реестрами. Удачи. – shellter

+0

@shellter Спасибо за ваши предложения. Я обновил сообщение. Знак доллара представляет собой «конец строки». Я только что проверил, что запрос curl был успешно выполнен, поэтому это должно быть регулярное выражение, которое предотвращает проблему. – RedGiant

+0

FYI: используйте varnishadm ban.list, чтобы узнать, как хранится регулярное выражение запрета. И старайтесь быть дружелюбным (не запрещайте по требованию *) http://book.varnish-software.com/4.0/chapters/Cache_Invalidation.html#lurker-friendly-bans – matheuzzy

ответ

0

Регулярное выражение кажется хорошо.
Я думаю, вы должны попробовать избежать косых черт после первой круглой скобки. Я предполагаю, что Varnish интерпретирует выражение между круглыми скобками как регулярное выражение (это хорошо), а в корешках регулярных выражений - разделители (некоторые специальные символы).
Это может работать:

curl -X BAN "https://oursite.com/product/(search\/home$|item\/(391|1232))" 
Смежные вопросы