研发提出了一个需求,只允许用户访问以.php或.html结尾的文件,其他文件不允许访问,以免造成里面的一些配置文件信息泄露。
查找了相关信息,可以做如下配置:
server {
location / {
if ($uri !~* \.(php|html|htm)$) {
return 403;
}
}
}
$uri:
请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如”/foo/bar.html”。
这样设置之后,基本实现了研发的要求。
但是其实还是有一个问题,正常的用户访问是输入网址之后,如果后面没有跟详细的资源路径,浏览器会返回index页面,但是如果有上面的设置,应该是优先级的问题,先进性if判断,直接就会返回403,而不是查找index页面。不过这个虚拟主机指向的是一个接口访问的资源文件夹,所以也能满足要求,如果是网站页面的话,最好还是使用下面的配置:
location ~* \.(ini|cfg|dwt|lbi)$ {
deny all;
return 404;
}
这样设置是禁止用户访问某些资源,虽然可能写后缀麻烦一些,不过效果会更好。