Назад | Перейти на главную страницу

Does nginx have a directive analogous to Apache's <directory>?</directory>

Я пытаюсь настроить сервер nginx, чтобы заменить нашу текущую настройку на основе Apache. У наших пользователей есть защищенные паролем каталоги (с директивами в файлах .htaccess), которые нам необходимо защитить в новой настройке.

Насколько я понимаю, в nginx нет директивы Directory, а есть только директива Location, которая относится к URI, а не к путям файловой системы. Это означает, что если каталог доступен по более чем одному URL-адресу. Я должен включить их все в одну или несколько директив Location. Например:

domain.com, root: /home/user/public_html
sub.domain.com, root: /home/user/public_html/sub

Если пользователь защищает sub.domain.com/admin (каталог /home/user/public_html/sub/admin) Я должен убедиться, что оба /admin в sub.domain.com и /sub/admin в domain.com защищены одним файлом паролей. Я бы предпочел защитить сам каталог, а не URL-адреса, по которым посетители могут получить доступ к его содержимому.

Итак, есть ли у nginx какой-либо механизм, который позволяет ссылаться на пути файловой системы в файлах конфигурации, например, в Apache <Directory> блоки делают - а может я просто неправильно читаю документацию nginx?

В nginx такого механизма нет. Я обычно устанавливаю разные каталоги для разных хостов:

domain.com, root: /home/user/sites/domain.com
sub.domain.com, root: /home/user/sites/sub.domain.com

что упрощает настройку (nginx).