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

咨询:Nginx访问未配置域名/IP时为何总是重定向至首个虚拟主机?

解决Nginx虚拟主机重定向到首个站点的问题

看起来你遇到的问题是Nginx的默认服务器匹配逻辑导致的,我来帮你一步步排查和解决:

问题根源

Nginx处理请求时,会根据请求的Host头匹配对应的server_name。如果没有找到匹配的server块,它就会使用默认服务器来处理这个请求。如果你没有显式指定默认服务器,Nginx会把配置文件中第一个加载的server块作为默认——也就是你那个重定向到www.iibs.co的块,这就是为什么未配置的域名/IP访问,甚至新添加的虚拟主机都会跳转到它。

解决方案

1. 显式配置默认服务器

创建一个专门处理未匹配请求的server块,把它放在所有其他虚拟主机配置的最前面(或者用default_server标记),这样就能避免未匹配的请求被导向你的第一个站点:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _; # 这个通配符表示匹配任何Host头

    # 这里可以根据需求设置处理逻辑,比如返回404
    return 404 "Requested site does not exist on this server.";
    # 如果你想重定向到某个统一页面,也可以这么写:
    # return 302 https://www.your-main-site.com/404;
}

# 然后再放你现有的其他server块,比如iibs.co的配置
server {
 server_name iibs.co;
 return 302 $scheme://www.iibs.co$request_uri;
}

# ...其他虚拟主机配置...

2. 检查新添加的虚拟主机配置

新站点被重定向,大概率是配置没生效或者有错误:

  • 确认server_name拼写完全正确,比如有没有把域名打错(比如少了个字母,或者多了个点)
  • 验证新站点的根目录权限:确保Nginx运行用户(通常是www-data)对/var/www/your-new-domain有读取权限
  • 务必重载Nginx配置:先执行sudo nginx -t检查语法是否正确,如果输出test is successful,再执行sudo systemctl reload nginx让配置生效

3. 调试验证

用curl命令测试请求,能帮你快速定位问题:

# 测试IP访问的响应
curl -I http://your-server-ip

# 测试新域名的响应
curl -I http://your-new-domain.com

查看返回的Location头或者状态码,就能确认是哪个server块在处理请求。如果还是有问题,去Nginx的错误日志(/var/log/nginx/error.log)里找线索,比如有没有权限错误或者配置加载失败的提示。

内容的提问来源于stack exchange,提问作者Alex A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:33:03