2015-12-14 3 views
10

Я получил это в моем Nginx конфигурации:Как запретить доступ ко всем точечным каталогам, кроме хорошо известных?

location ~ /\. { 
    deny all; 
} 

location /.well-known/ { 
    allow all; 
} 

Но я до сих пор не может получить доступ к http://example.com/.well-known/acme-challenge/taUUGC822PcdnCnW_aADOzObZqFm3NNM5PEzLNFJXRU. Как разрешить доступ только к одной директории с точками?

ответ

16

У вас есть расположение и расположение префикса. Место регулярного выражения имеет приоритет, если только ^~ не используется с расположением префикса. Попытайтесь:

location ~ /\. { 
    deny all; 
} 
location ^~ /.well-known/ { 
# allow all; 
} 

Для получения более подробной информации см. this document.

+0

Должно быть '/ \. Well_known /' тогда, не так ли? Не '' ~ 'регулярное выражение? – mpen

+0

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

+0

О, это не так? Документы очень неясны в отношении того, что делают каждый из символов. Спасибо за разъяснения. Вы прокомментировали «разрешить все» - это из-за этого правила, не так ли? «Если в самом длинном совпадающем расположении префикса есть модификатор«^~ », регулярные выражения не проверяются». – mpen

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