2015-10-06 2 views
2

Я написал два разных параметра: один для отказа в доступе к dotfiles, а другой для отказа в доступе к списку расширений файлов.nginx location deny по синтаксису расширения файла

Но есть ли какой-либо синтаксис, который может лишить dotfiles в списке других расширений файлов?

location ~* \.(7z|bak|bash|bz2|config|dist|engine|fla|git|gz|inc|inc|info|ini|install|iso|log|make|module|profile|psd|py|rar|rb|sh|sql|swp|tar|zip)$ { 
deny all; 
} 

location ~ /\. { deny all; access_log off; log_not_found off; } 
+0

Просьба привести пример «dotfiles» –

+0

Dotfiles как в любом файле, начинающемся с точки, любой конфигурации или rc-файле, обычно встречающемся в системах на основе Unix, таких как .htaccess, .bashrc, .zshrc – Dogbert

ответ

1

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; 
} 

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

Смежные вопросы