浏览量 4280
2013/04/24 18:25
要在nginx中做特定目录访问控制首先要了解nginx中^~的意义,^~ 匹配路径的前缀,优先级在conf正则里同=一样是最高的优先匹配。
例如^~/control/ {} 即为匹配任何以/control/开头的路径并不再匹配其他正则。
location ^~ /control/ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
allow 172.30.1.0/24;
#如果允许多个段访问 只需追加 allow XXX.XXX.XXX.XXXX/mask即可
deny all;
}
以上规则即 /control/为开头的路径只能由172.30.1.0/24段访问,其他地址禁止访问。
由于^~正则优先级最高并不再匹配正则的规则所以需要在location内部加上
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
以使/control/能被172.30.1.0段的地址正常访问,并让里面的文件能正常的解析。