Nginx配置中符号_的含义是什么?含server_name配置示例
Nginx中
server_name _;的含义解析 嘿,这个问题问得很到位!我来给你把server_name _;的门道说清楚~
首先,_在这里是Nginx里一个特殊的占位符标识,它的核心作用是充当「兜底服务器」,专门处理两种情况的请求:
- 客户端发送的请求里完全没有
Host请求头; - 请求的
Host头值,和当前配置文件里所有server块的server_name都匹配不上。
关键误区澄清
很多人会误以为_是通配符(比如像*那样匹配所有域名),这是错的!它并不是通配符,只是一个Nginx认可的无效域名值,用来标记这个server块作为「无匹配时的默认处理者」。
补充:更规范的默认服务器写法
其实Nginx官方更推荐的是直接在listen指令里加上default_server参数来指定默认服务器,比如:
listen 8080 default_server;
这种写法比server_name _;更直观,功能是完全等价的——当没有合适的server块匹配请求时,就会走到带default_server的这个server块。
举个实际配置的例子帮你理解:
server { listen 8080; server_name mysite.com; # 专门处理Host为mysite.com的请求 location / { root /var/www/mysite; } } server { listen 8080; server_name _; # 处理所有没带Host头,或者Host不匹配mysite.com的请求 location / { return 404 "Sorry, this site doesn't exist!"; } }
在这个配置里,如果用户访问时Host头是random.com,或者根本没发Host头,请求就会被第二个server块拦截,返回404提示。
内容的提问来源于stack exchange,提问作者user7693832
相关产品推荐
相关产品推荐

