У меня есть каталог (/var/www/private/). В этом каталоге находятся три файла (1.txt, 2.txt, 3.txt).
Я хочу запретить доступ для всех ко всему каталогу и трем файлам, однако иногда я хочу предоставить доступ к определенному IP-адресу и конкретному файлу в этом каталоге.
В файле "block.conf" я перечислим файл и IP-адрес, которому предоставляется доступ. Мне нужно nginx для чтения этого файла и соответственно запретить/разрешать доступ (без необходимости перезагрузки nginx при каждом изменении файла).
Например, в файле block.conf:
#denies access to all files in private directory
location /private {
deny all;
}
#allows below IP access to 2.txt
location /private/2.txt {
allow 5.3.7.0;
}
#allows below IP addresses access to 1.txt
location /private/1.txt {
allow 3.5.7.2;
allow 9.7.2.2
}
Расположение и IP-адреса в файле block.conf часто редактируются с помощью PHP, и я хочу, чтобы nginx запретил/разрешал доступ к файлу.
Я понял, что это будет легко реализовать, но есть некоторые проблемы:
Если это невозможно с модой доступа nginx, то как я могу это сделать? Если nginx не может этого сделать, есть ли другое программное обеспечение, которое может?
Единственный способ, которым я могу думать, - создать фрагмент конфигурации nginx, обновить его и запустить cron-скрипт с правами root, который иногда будет опросить этот фрагмент и перезагрузить nginx, если он изменится.
В отличие от Apache, конфигурация nginx не перестраивается по каждому запросу.