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

如何配置Nginx实现特定子域名与路径的重定向需求?

可以通过Nginx配置实现你的需求

完全可以实现,核心是拆分独立的server块来分别处理不同域名的规则,避免同一块内规则冲突。以下是调整后的完整配置:

# 处理HTTP跳转HTTPS的server块(80端口)
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com task-manager.example.com;

    # example.com和www.example.com HTTP跳转HTTPS根路径
    if ($host ~* ^(www\.)?example\.com$) {
        return 301 https://$host/;
    }

    # task-manager.example.com HTTP直接跳转HTTPS的/api/路径
    if ($host = task-manager.example.com) {
        return 301 https://$host/api/;
    }

    return 404; # 兜底规则
}

# 处理example.com和www.example.com的HTTPS请求
server {
    server_name example.com www.example.com;
    # 保留Certbot的SSL配置(比如listen 443 ssl; ssl_certificate等)
    # some Certbot SSL configuration ...

    # 根路径代理到前端应用
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://localhost:9091;
    }

    # 访问/api/时重定向到对应域名的根路径
    location /api/ {
        return 301 https://$host/;
    }
}

# 处理task-manager.example.com的HTTPS请求
server {
    server_name task-manager.example.com;
    # 保留Certbot的SSL配置
    # some Certbot SSL configuration ...

    # 精确匹配根路径访问,自动重定向到/api/
    location = / {
        return 301 https://$host/api/;
    }

    # /api/路径代理到后端应用
    location /api/ {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://localhost:9090;
    }

    # 其他非/api路径默认跳转到/api/(可选,覆盖用户输入的非常规路径)
    location / {
        return 301 https://$host/api/;
    }
}

关键规则说明:

  • 拆分server块:把三个域名拆成两组独立的HTTPS server块,确保不同域名的规则互不干扰,这是Nginx配置的最佳实践之一。
  • task-manager子域名跳转:用location = /精确匹配根路径访问,直接重定向到/api/,同时HTTP请求也一步跳转到HTTPS的目标路径,避免多次跳转。
  • 主域名/api路径拦截:单独在主域名的server块里配置/api/规则,访问该路径时直接重定向到根路径,不再代理到后端服务。
  • 保留Certbot配置:所有SSL相关配置(监听端口、证书路径等)都保留在对应HTTPS server块中,不影响证书自动续期。

验证效果:

  • 访问http://task-manager.example.com或https://task-manager.example.com,自动跳转到https://task-manager.example.com/api/
  • 访问https://example.com/api或https://www.example.com/api,自动跳转到对应域名的根路径
  • 主域名根路径正常代理到前端应用,task-manager的/api路径正常代理到后端应用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:35