nginx中server_name与host匹配优先级

nginx在处理http请求时,依据header头中的host与nginx.conf中的server_name进行匹配,遵循完全匹配、通配符匹配及正则表达式匹配的顺序。若无匹配,将优先选择配置了default或default_server的server块,或监听相同端口的首个server块。匹配规则对于正确路由请求至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开始处理一个http请求时,nginx会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请求。

server_name与host匹配优先级如下:

1、完全匹配,选择所有字符串完全匹配的server_name,如www.test.com

2、通配符在前面的server_name,如*.test.com

3、通配符在后面的server_name,如www.test.*

4、最后选择使用正则表达式才匹配的server_name,如~^\.test\.com$

如果都不匹配

1、优先选择listen配置项后有[default | default_server]的server块

2、找到匹配listen端口的第一个server块

如果server_name后跟着空字符串(如 server_name "";),那么表示匹配没有Host这个HTTP头部的请求

如果有配置多个server_name的主机文件,优先使用最先读取配置的server_name

验证参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值