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

如何在NGINX中将URL重写为子域名(保留原域名)

在NGINX中实现特定URL到对应子域名的重定向

直接在NGINX的app.example.com对应的server配置块中添加规则即可,两种配置方案供你选择:

方案1:单独配置每个目标路径

适合需要重定向的路径数量不多的场景,规则清晰直观:

server {
    listen 80;
    listen [::]:80;
    server_name app.example.com;

    # 重定向calendar路径到对应子域名
    location /calendar {
        return 301 $scheme://calendar.example.com$request_uri;
    }

    # 重定向meetings路径到对应子域名
    location /meetings {
        return 301 $scheme://meetings.example.com$request_uri;
    }

    # 保留原域名其他请求的正常处理逻辑
    location / {
        # 这里填写你原有的app.example.com业务配置,比如反向代理或静态文件路径
        # proxy_pass http://your_backend_service;
        # root /path/to/your/static_files;
    }
}

方案2:正则批量匹配路径

如果后续需要新增更多同规则的重定向,可以用正则批量处理,减少重复配置:

server {
    listen 80;
    listen [::]:80;
    server_name app.example.com;

    # 正则捕获路径前缀,仅针对指定的几个路径生效
    location ~ ^/([a-z0-9-]+) {
        if ($1 !~ ^(calendar|meetings)$) {
            break;
        }
        return 301 $scheme://$1.example.com$request_uri;
    }

    # 原域名其他请求的正常处理逻辑
    location / {
        # 原业务配置
    }
}

关键细节说明

  • $scheme会自动适配当前请求的HTTP/HTTPS协议,无需硬写协议名
  • $request_uri会保留原请求中路径的后续部分,比如app.example.com/calendar/2024会重定向到calendar.example.com/2024
  • 如果使用HTTPS,记得在server块中补充对应的SSL配置(listen 443 ssl、ssl_certificate等)
  • 修改配置后,先执行nginx -t检查语法正确性,确认无误后执行systemctl reload nginx(或对应系统的重启命令)生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:36:03