Nginx запрещает / разрешает IP-доступ к файлу динамически - на лету

1

У меня есть каталог (/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 считывает block.conf только один раз при запуске, не позволяя мне динамически изменять доступ (без перезагрузки nginx)
  • директива location не может быть в файле block.conf, не позволяя мне устанавливать доступ к определенным файлам

Если это невозможно с модой доступа nginx, то как я могу это сделать? Если nginx не может этого сделать, есть ли другое программное обеспечение, которое может?

Теги:
security
nginx
server
http

1 ответ

1

Единственный способ, которым я могу думать, - создать фрагмент конфигурации nginx, обновить его и запустить cron-скрипт с правами root, который иногда будет опросить этот фрагмент и перезагрузить nginx, если он изменится.

В отличие от Apache, конфигурация nginx не перестраивается по каждому запросу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню