2016-06-18 2 views
1

Я пытаюсь использовать .htpasswd для защиты/admin/раздела в моем домене.Защита паролем файлов в папке в Nginx с использованием .htpasswd

Я смог успешно защитить файл корневой index.php с помощью этой конфигурации:

location /admin/ { 
      try_files $uri $uri/ =404; 
      auth_basic "Restricted"; 
      auth_basic_user_file /etc/nginx/.htpasswd; 
    } 

Но ассоциированные файлы в этой папке находятся все еще доступны для просмотра. Например, на http://domain.com/admin/whatever.php - страница загружается, затем открывается пароль auth Nginx, но вы можете просто отказаться от нее и просмотреть страницу.

После некоторых исследований я попытался использовать regex wildcards безуспешно.

Doesn't work:

location "~^/admin/.$" { 
      try_files $uri $uri/ =404; 
      auth_basic "Restricted"; 
      auth_basic_user_file /etc/nginx/.htpasswd; 
    } 

Doesn't work:

location "~^/admin/*\$" { 
      try_files $uri $uri/ =404; 
      auth_basic "Restricted"; 
      auth_basic_user_file /etc/nginx/.htpasswd; 
    } 

Как я могу защитить паролем как индекс корня, и все вложенные папки и файлы, а? Все прошлое/admin/должно быть недоступным.

+1

Вы пробовали '' ~ ^/admin /.* "'? – SztupY

+0

Это сработало, спасибо! Откуда вы знаете синтаксис для этого? – some1

ответ

5

Ваш синтаксис регулярных выражений почти хорошо, вы на самом деле нужно смешать две попытки вы сделали:

location "~^/admin/.*" { 
     try_files $uri $uri/ =404; 
     auth_basic "Restricted"; 
     auth_basic_user_file /etc/nginx/.htpasswd; 
} 

Это происходит потому, что в регулярном выражении синтаксис . означает любой символ (один один), и * означает любое сумма (которая может быть равна нулю) предыдущего «чего-то». Смешивание двух (.*) будет означать любое количество символов.

Это одна из основ регулярных выражений, поэтому я бы посоветовал вам немного узнать о них. Learning Regular Expressions содержит руководства по следующим шагам. Он также содержит примечания о некоторых ограничениях для шаблона . при работе с новыми символами, хотя это не относится к URL-адресам.

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