Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Nginx动态拒绝/允许对文件的IP访问-动态_Php_Security_Http_Nginx_Server - Fatal编程技术网

Php Nginx动态拒绝/允许对文件的IP访问-动态

Php Nginx动态拒绝/允许对文件的IP访问-动态,php,security,http,nginx,server,Php,Security,Http,Nginx,Server,我有一个目录(/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

我有一个目录(/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
}
block.conf文件中的位置和IP地址将使用PHP进行频繁编辑,我希望nginx相应地拒绝/允许访问该文件

我认为这很容易实现,但存在一些问题:

  • nginx在启动时只读取block.conf一次,不允许 动态修改访问权限(无需重新加载nginx)
  • location指令不能在block.conf文件中,也不能在 允许我设置对特定文件的访问权限

如果nginx的access mod无法做到这一点,那么我该怎么做呢?如果nginx不能做到这一点,还有其他软件可以做到吗?

我能想到的唯一方法是创建一个nginx配置代码段,对其进行更新,并以root用户身份运行一个cron脚本,该脚本偶尔会轮询此代码段,如果它发生更改,则重新加载nginx


与Apache不同,nginx配置并不是在每个请求上都重建。

这似乎现在是可能的,但不幸的是,只有在nginx的商业版本中才可能。看见