You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:07:35