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

Nginx未配置子域名跳转至Angular应用404页面问题排查

问题根源:Nginx配置遗漏

这是Nginx的配置问题,和Angular路由无关。

当你访问未配置的子域名(比如app-test.sub.example.com)时,Nginx找不到对应server_name的server块,就会把请求转发给默认server——而你的Angular应用所在的server块刚好被Nginx当作了默认server(通常是第一个加载的server配置),所以请求会落到Angular应用的根目录,加载index.html,之后Angular路由捕获到未知路径,触发**规则跳转到/not-found。

解决方案

你需要创建一个专门的默认server块,处理所有未匹配到的子域名请求,避免它们落到Angular应用的server块:

  1. 添加默认server配置
server {
    listen 80 default_server;
    server_name _; # 匹配所有未被其他server块覆盖的域名
    return 444; # 直接关闭连接,也可以改成 return 404 "Unknown Subdomain"; 返回明确的404提示
}
  1. 确保Angular应用的server块仅处理指定子域名
    你的现有Angular server块无需修改server_name,但要确保它没有设置default_server(如果之前加过的话要去掉),让它只响应app.sub.example.com的请求:
server {
  server_name app.sub.example.com;
  listen 80;
  root /var/www/app;
  index index.html index.htm;
  location / {
    try_files $uri $uri/ /index.html;
  }
}
  1. 重启Nginx生效
    执行命令:
sudo nginx -s reload

这样,所有未配置的子域名请求都会被默认server处理,直接返回404或关闭连接,不会再触发Angular应用的路由逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:15:27