Что означает символ «~» в VCL? - PullRequest
       7

Что означает символ «~» в VCL?

0 голосов
/ 06 сентября 2018

Я вижу, что это используется в varnish vcl if, заявления "~"

if (req.url ~ "phpMyAdmin") {
    return (pass);
}

Я понимаю, что это работает как == некоторое время как in_array()

if ( req.http.User-Agent ~ "(Android|iPhone|iPad|BlackBerry|SAMSUNG)") 
   return(pass);
}

Может кто-нибудь объяснить, что это на самом деле означает. Это также оператор php по умолчанию? и в чем разница между этим и использованием ==

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Согласно официальной документации , ~ является оператором совпадения .

== сравнивает два значения, возвращает true, если они равны

~ проверяет значение по регулярному выражению, возвращает true, если значение совпадает

~ Матч . Может использоваться с регулярными выражениями или списками ACL.

# match an IP address against an ACL
if (client.ip ~ local) {
  return (pipe);
} 

Varnish использует Perl-совместимые регулярные выражения (PCRE). Чтобы отправить флаги в механизм PCRE, например сопоставление без учета регистра, добавьте флаг в скобках после знака вопроса, например:

# If host is NOT example dot com..
if (req.http.host !~ "(?i)example\.com$") {
    ...
}
0 голосов
/ 06 сентября 2018

Я думаю, что в php нет такого символа, как "~".

Уже проверено с документацией php.

enter image description here

...