Регулярное выражение для поиска доменов, которые будут кэшироваться Varnish.

Я задаю этот вопрос здесь, потому что я думаю, что это больше вопрос о регулярном выражении, чем фактический вопрос о лаке.

Что я в основном хочу сделать, так это определить список доменов, которые будет кэшировать лак. На это уже дан ответ, но я хочу использовать другой подход.

Varnish: кэшировать только определенный домен

Теперь код, который используется в этом ответе, следующий:

sub vcl_recv {
   # dont cache foo.com or bar.com - optional www
   if (req.http.host ~ "(www)?\.(foo|bar)\.com") {
     pass;
   }
   # cache foobar.com - optional www
   if ( req.http.host ~ "(www)?\.foobar\.com" ) {
     lookup;
   }
}

Сейчас я хочу немного другого. У меня есть имена с другим TLD, но я хочу кэшировать только версию домена без www.

Так что только mydomain.com, или myotherdomain.nl, или yadomain.net

Любой другой субдомен может быть передан на серверную часть.


person Saif Bechan    schedule 20.12.2011    source источник


Ответы (1)


Если я правильно понимаю ваш вопрос, у вас есть список с несколькими версиями одного и того же веб-сайта, поэтому и www.foobar.com И/ИЛИ foobar.com, и вы хотите сопоставить ТОЛЬКО foobar.com

Если это так, вам нужно сделать обратную ссылку с помощью (?<!www). Таким образом, поиск, который будет соответствовать только доменам без предшествующего www, будет (?<!www\.)((?:[^.\s]+)\.(?:com|net|nl))

надеюсь, это поможет

РЕДАКТИРОВАТЬ

(?<!www\.)((?:[^.\s]+)\.(?:\w{2,3})) если домены неизвестны

person Josha Inglis    schedule 20.12.2011
comment
Ах да, я ищу что-то подобное. Есть ли способ сделать последнюю часть переменной. Таким образом, он заботится о .nl, .com, .org, .net, .xyz. - person Saif Bechan; 20.12.2011
comment
Вы можете просто сделать его \w{2,3}, но он может потерять некоторую специфичность. - person Josha Inglis; 20.12.2011