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

NGINX解析未配置域名问题:为何未配置域名仍返回指定内容?

问题原因与解决方案

这是因为Nginx的**默认服务器(default server)**机制在起作用,你的配置本身没有语法错误,但缺少了对未匹配域名的处理规则。

具体原因分析

当Nginx接收到请求时,会根据请求头里的Host字段匹配配置中的server_name。如果找不到完全匹配的server块,Nginx会自动使用第一个定义的server块作为默认服务器来处理该请求。

你的配置里只有一个针对mydomain01.com和www.mydomain01.com的server块,所以访问mydomain02.com时,没有对应的server块匹配,Nginx就会用这个唯一的server块处理请求,自然返回了http://localhost:8080的内容。

修正方案

你可以添加一个专门的默认server块,处理所有未匹配指定域名的请求,比如返回404错误:

http {
    # 保留原有配置内容...

    # 添加默认server块,放在所有server块最前面
    server {
        listen 80 default_server;
        server_name _; # 下划线匹配所有未指定的域名
        return 404; # 返回404错误,也可自定义其他响应内容
    }

    # 原有server块
    server {
        listen 80;
        server_name mydomain01.com www.mydomain01.com;
        location / {
            proxy_pass http://localhost:8080;
            include "../proxy_params.conf";
        }
    }
}

这里的关键是给默认server块加上default_server参数,并用server_name _覆盖所有未被其他server块匹配的域名。这样访问mydomain02.com时,就会触发这个默认server块,返回404而非代理到本地服务。

另外,你的hosts文件里127.0.0.1 www.mydomain01.com;后面的分号是多余的,虽然不影响解析,但建议修正为:

127.0.0.1 mydomain01.com
127.0.0.1 www.mydomain01.com
127.0.0.1 mydomain02.com
127.0.0.1 www.mydomain02.com

内容的提问来源于stack exchange,提问作者davidesp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:51:50