3、Nginx访问控制
Nginx中提供了两个使用于配置访问权限控制的指令,分别为allow和deny;
allow使用于设置允许访问的权限,deny使用于设置禁止访问的权限。
在用时,权限指令后只要跟上允许或者禁止的IP,IP段或者all就可,其中,all表示所有的;
权限控制指令用注意点:
单个IP指定作使用范围作使用小,all指定作使用范围最大;
同一块下,若同时存在多个权限指令,则先出现的访问权限设置生效,并且会对后出现的设置进行覆盖,未覆盖的范围仍然生效,否则以先出现的设置为准;
当多个块中都出现了权限设置指令,则内层块中的权限级别要比外层块中设置的权限级别高;
访问控制实例:
1、默认访问权限:
准备两台虚拟机,保证3台虚拟机网络通信相互正常;
修改Nginx服务器配置文件:
利使用准备好的两台机器访问Nginx服务器:curl http://192.168.44.31,返回对应index内容,表明虚拟机默认未设置访问权限,允许所有使用户的访问,相当于为server设置了allow all。
2、禁止所使用使用户访问:
此时修改配置(禁止所有的用户端访问)如下后重启Nginx(service nginx restart):
再次访问返回如下错误,表明禁止访问成功:
3、只允许指定使用户访问设置:
设置只允许33机器访问,禁止32机器访问,修改配置如下重启Nginx:
此时33机器访问返回成功
此时32机器访问失败
4、不同块的权限指令优先级:
修改配置如下,重启Nginx服务:
用33,32机器再次访问出现上述错误返回403;
再次修改配置,在server里添加配置如下,重启Nginx服务:
再次用33,32机器访问返回成功;
以上是因为Nginx配置文件中的各个块在嵌套的情况下,内层块内的指令比外层块内的指令执行优先级高,因而,当内外层中同时出现权限指令时,则内层块中的allow all会覆盖外层块的deny all的设置;
在实际应使用中,权限控制的需求更加复杂,仅靠deny和allow这两个指令不可以满足实际需求,还需要用location块来完成相关匹配;
location前缀说明:
=:根据其后的指定模式进行准确匹配;
~:用正则表达式完成location的匹配,区分大小写;
~*:用正则表达式完成location的匹配,不区分大小写;
*~:不用正则表达式,完成以指定模式开头的location匹配;
@:使用于定义一个location块,且该块不可以被外部用户端访问,只可以被Nginx内部配置指令所访问;
访问控制复杂应使用:
1、精准匹配
精准匹配是指使用户访问的URI与指定的URI完全一致的情况才会执行其后的指令块;
配置如下:
33访问结果:
32访问结果:
从结果能看出准确匹配是只有使用户请求的URI和location定义的匹配模式完全一致情况下才会执行的指令块,否则匹配不成功;
2、正则匹配
Nginx配置文件中,多个正则location之间按照正则location在配置文件中的书写顺序进行匹配,且只需匹配成功就不会继续匹配后面定义的正则location;
配置如下:
通过访问返回如下结果:
此时我们将配置顺序调换位置,如下:
此时返回结果都是404:
3、最大前缀匹配
因为location能同时定义多个,当一个配置文件中 同时出现多个location时,普通location之间遵循最大前缀匹配准则,简单讲就是匹配度最高的location将会执行;
配置如下:
访问结果如下:
当最大前缀location与正则location同时存在时,假如正则location匹配成功,则不会执行最大前缀location:
配置如下:
location /定义的是最大前缀location,使用于匹配当前网站根目录下所有文件;
~\.html$使用正则匹配所有以.html结尾的url;
不同url对应的响应结果如下:
从上述结果能看出访问192.168.44.31时完成了第一个匹配;
而aa.html时符号正则location因而返回了404;
aa.jsp因为不符合正则location因而匹配了最大前缀location返回了403。
4、禁使用正则匹配
利使用=精准匹配或者^~非正则匹配能在正则匹配之前优先匹配,从而禁止执行原有的正则匹配。
配置如下:
访问结果:
上述配置中,第一个配置使用于准确匹配网站根目录下的/aaa/test.html,
第二个配置使用于非正则匹配网站根目录下的文件,
第三个配置使用于正则匹配网站根目录下以.htm结尾的文件;
从结果能看出,在用了“=”或者“^~”前缀时,普通location匹配后将不再执行正则location的匹配;
“^~”仍然遵循最大前缀匹配规则,=则严格按照准确匹配执行;
当多种类型的location匹配同时出现时,最终执行结果为:
“=”匹配 > “^~”匹配 > 正则匹配 > 普通的最大前缀匹配;
只需优先的location匹配成功 ,就不会执行其余的location;
上篇:2、认识Nginx配置文件
下篇:4、Nginx日志文件
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 3、Nginx访问控制