nginx сервер uses прямо pcre как библиотека регулярных выражений; независимо от того, какой pcre принимает, так и nginx.
Некоторые испытания на OpenBSD с egrep(1)
показывает:
$ printf '/t.bak\n/t.bakk\n/t.zipp\n/a.zip\n/.ht\n/t.ht\n' |grep -E '\.(bak|zip)$|/\.' /t.bak /a.zip /.ht $
Но OpenBSD's egrep
фактически не используется PCRE, но regcomp(3)
вместо этого! Однако, PCRE приходит с pcregrep
, который действительно производит идентичные результаты:
$ printf '/t.bak\n/t.bakk\n/t.zipp\n/a.zip\n/.ht\n/t.ht\n' |pcregrep '\.(bak|zip)$|/\.' /t.bak /a.zip /.ht $
Вы также можете попробовать pcretest
для тестирования регулярных выражений (по-видимому, вы должны указать их с чем-то вроде #
есть):
$ pcretest
PCRE version 8.30 2012-02-04
re> #\.(bak|zip)$|/\.#
data> /t.bak
0: .bak
1: bak
data> /t.baki
No match
data> /.h
0: /.
data> ^D
$
Т.е., подведем итог: просто конкатенация двух выражений с |
должна работать.
location ~* \.(bak|zip)$|/\. {
deny all;
}
Однако, для поддержания (и так как вы должны были задать этот вопрос в первую очередь), вы, возможно, также хотят, чтобы эти выражения друг от друга для более четкий обзор того, что такое конфигурация. (Эти два выражения могут быть даже более эффективными из-за какой-то оптимизации конца строки, чем при объединении, но это просто дикая догадка с моей стороны.)
Просьба привести пример «dotfiles» –
Dotfiles как в любом файле, начинающемся с точки, любой конфигурации или rc-файле, обычно встречающемся в системах на основе Unix, таких как .htaccess, .bashrc, .zshrc – Dogbert