网站首页 > 技术教程 正文
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;
下篇:4、Nginx日志文件
猜你喜欢
- 2024-10-11 妙呀!给旧手机安装个nginx,就可以访问网站了?
- 2024-10-11 nginx报错bind() to 0.0.0.0:80 failed 10013access permissions
- 2024-10-11 Nginx防止浏览器下载文件直接打开
- 2024-10-11 Nginx为什么快到根本停不下来?(为什么使用nginx)
- 2024-10-11 关于Nginx服务器下部署Vue项目,报405。解决方案
- 2024-10-11 nginx禁止用户访问.htaccess(nginx禁止访问文件)
- 2024-09-16 nginx访问控制Access Control的问题
- 2024-09-16 配置Nginx的访问控制(nginx访问权限设置)
- 2024-09-16 nginx防盗链,nginx访问控制,nginx代理
- 2024-09-16 nginx 400 状态码问题探究(nginx报错400)
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)