用户请求时发出请求后,服务器会先进行域名匹配(server_name),然后再进行uri匹配,uri中如果没有使用 正则表达式,Nginx会先在server中的多个location选取匹配度最高的一个uri,uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则uri和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。
匹配符 | 匹配规则 | 优先级 |
---|---|---|
= | 精确匹配url(不区分大小写) | 1 |
^~ | 匹配uri,不使用正则表达式,高优先级 | 2 |
~ | 区分大小写的正则规则 | 3 |
~* | 不区分大小写的正则匹配 | 4 |
/ | 通用匹配,任何请求都会匹配到,其他location匹配失败才会走这里 | 4 |
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
# 精确匹配uri 不区分大小写
location = /a {
default_type text/html;
echo "/a";
}
# 匹配uri,不使用正则表达式,高优先级
location ^~ /a/a {
default_type text/html;
echo "/a/a";
}
# 区分大小写的正则规则
location ~ /\d {
default_type text/html;
echo "匹配所有数字";
}
# 不区分大小写的正则匹配
location ~* /\w {
default_type text/html;
echo "不区分大小写的正则匹配";
}
# 通用匹配,任何请求都会匹配到,其他location匹配失败,默认会匹配
location / {
default_type text/html;
echo "/";
}
# 不区分大小写匹配,只要用户访问.jpg,gif,png,css 都走这里
location ~* .*\.(.jpg|gif|js|css)$ {
# 缓存......
}
# 拦截后缀名为 zip rar ...
location ~ \.(zip|rar|sql|bak|gz|7z)$ {
return 444;
}
}
}
打赏
当前共有 1 条评论
贵站并不符合本站友链规则。