nginx禁止访问文件或目录的配置方法及location指令的uri匹配规则
2019-09-19 22:34:23
1033 次阅读
0 个评论
nginx禁止访问文件或目录的配置方法
nginx禁止访问指定后缀的文件
nginx禁止访问指定目录
也可以使用正则匹配同时禁止访问多个指定目录
nginx禁止访问指定目录中的特定后缀的文件
nginx location指令的uri匹配规则
nginx可以通过配置location指令来对用户请求的uri进行调度,执行不同的文件。
location指令有两种匹配模式,普通字符串前缀匹配和正则表达式匹配。
普通字符串前缀匹配必须以相应的uri开头,如下的匹配规则,必须以/some/path开头的uri才会被匹配,比如/some/path/document.html,而/my-site/some/path不会被匹配。
匹配的顺序是先匹配普通字符串前缀,再匹配正则表达式,不过正则匹配优先级高于普通匹配除非使用修饰符 ^~ 。
语法规则
匹配执行流程
查找普通字符串前缀的匹配规则
以修饰符 = 开头的普通字符串进行精确匹配,如果匹配到,则停止之后的规则查找
如果普通字符串以修饰符 ^~ 开头,并且是匹配到的最长普通字符串前缀,在匹配到这条规则后不再进行之后的正则查找了
存储匹配到的最长普通字符串前缀规则
查找正则表达式的匹配规则
在所有正则匹配规则中找到第一个匹配项后,就以此项为最终匹配结果
如果没有查找到正则表达式匹配,则以4中存储的普通匹配为最终匹配结果
普通字符串前缀匹配与配置文件中的前后定义顺序无关,匹配顺序从长到短,正则表达式匹配则受定义的前后顺序影响。
nginx禁止访问指定后缀的文件
location ~ .*\.(ini|inc|conf|dat|txt)$ {
# 正则表达式匹配,禁止访问后缀为ini,inc,conf,dat,txt的文件
# 修饰符 ~ 表示正则匹配区分大小写,可以使用修饰符 ~* 表示不区分大小写
deny all;
}
nginx禁止访问指定目录
location ^~ /path1/ {
# 普通字符串前缀匹配,修饰符 ^~ 表示如果匹配到这条普通规则后,不再进行之后的正则搜索了
deny all;
}
location ^~ /path2/ {
deny all;
}
也可以使用正则匹配同时禁止访问多个指定目录
location ~ ^/(App|config|Include|Theme|vendor)/ {
deny all;
}
nginx禁止访问指定目录中的特定后缀的文件
location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ {
# 禁止访问这些指定目录中的php文件
deny all;
}
nginx location指令的uri匹配规则
nginx可以通过配置location指令来对用户请求的uri进行调度,执行不同的文件。
location指令有两种匹配模式,普通字符串前缀匹配和正则表达式匹配。
普通字符串前缀匹配必须以相应的uri开头,如下的匹配规则,必须以/some/path开头的uri才会被匹配,比如/some/path/document.html,而/my-site/some/path不会被匹配。
location /some/path/ {
...
}
匹配的顺序是先匹配普通字符串前缀,再匹配正则表达式,不过正则匹配优先级高于普通匹配除非使用修饰符 ^~ 。
语法规则
location [ = | ~ | ~* | ^~ ] uri { ... }
location = /uri = 开头表示精确匹配,只有完全匹配上才能生效,匹配成功则停止其他匹配。
location ^~ /uri ^~ 开头对uri路径进行普通字符串前缀匹配,匹配成功则不再进行正则匹配。
location ~ pattern ~ 开头表示区分大小写的正则匹配。
location ~* pattern ~* 开头表示不区分大小写的正则匹配。
location /uri 不带任何修饰符的普通字符串前缀匹配,优先级低于正则匹配。
location / 通用匹配,任何未匹配到其它location的请求都会匹配到。
匹配执行流程
查找普通字符串前缀的匹配规则
以修饰符 = 开头的普通字符串进行精确匹配,如果匹配到,则停止之后的规则查找
如果普通字符串以修饰符 ^~ 开头,并且是匹配到的最长普通字符串前缀,在匹配到这条规则后不再进行之后的正则查找了
存储匹配到的最长普通字符串前缀规则
查找正则表达式的匹配规则
在所有正则匹配规则中找到第一个匹配项后,就以此项为最终匹配结果
如果没有查找到正则表达式匹配,则以4中存储的普通匹配为最终匹配结果
普通字符串前缀匹配与配置文件中的前后定义顺序无关,匹配顺序从长到短,正则表达式匹配则受定义的前后顺序影响。
00
相关话题
- nginx 多组件安装及secure_link配置与文件下载防盗链的使用
- SpringBoot自定义配置文件及读取配置文件
- Nginx根据User Agent动态配置root目录适配移动端
- Nginx配置WebSocket负载均衡
- Nginx支持字体文件
- Nginx配置http和https共存
- Nginx端口转发端口配置
- spring配置文件中bean的属性name与id的区别
- springboot读取配置文件
- 解决jquery的$.post或$.ajax发送同步请求时,loading的效果失效
- Nginx配置Symantec 免费版 SSL证书
- sql like索引 模糊匹配优化
- SpringBoo使用jasypt加密配置文件
- SpringMVC 配置servlet3.0 文件上传
- vue 3 的watchEffect 使用方法