nginx的server匹配规则
文章目录
nginx的server块可以配置多个,那么一个请求该匹配那个server块呢,这主要是根据server块的server_name和listen来决定的。其中server_name仅仅检查请求的“Host”头以决定该请求应由哪个虚拟主机来处理。
server {
listen 8001;
server_name www.baidu.com;
}
server {
listen 8001;
server_name *.com;
}
server {
listen 8001;
server_name baidu.*;
}
server {
listen 8001;
server_name ~^www\.baidu\.com$;
}
server {
listen 8001 default_server;
server_name _;
return 404;
}
相同listen端口的情况下,多个server的匹配顺序如下:
- 完全匹配优先级最高,匹配则终止
- 通配符在前的优先级其次,如
*.com - 通配符在后的优先级次之,如
baidu.* - 正则匹配优先级最低,如
~^www\.baidu\.com$
以上若都没有匹配,那么其会走默认的server,即:
- 优先选择listen配置项后有default或default_server的server,若没有则:
- 找到匹配listen端口的第一个server块
本文介绍了Nginx中server块的匹配规则,包括如何通过listen端口和server_name指令来确定请求应由哪个虚拟主机处理。具体涉及完全匹配、通配符匹配、正则表达式匹配等不同级别的匹配方式及其优先级。
360

被折叠的 条评论
为什么被折叠?



