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

如何通过Nginx实现域名跳转?将a.com及*.a.com转发至对应b.com域名

解决Nginx下a.com域名跳转至b.com的配置方案

嗨,我来帮你搞定这个域名跳转的需求!你需要把所有来自a.com和*.a.com的请求,无缝转发到对应的b.com和*.b.com(而且只有b.com配置了SSL证书),下面是具体的配置方案:

核心思路

我们需要通过Nginx的变量替换来实现域名的映射,同时确保跳转后的链接是HTTPS协议(因为b.com配置了SSL)。推荐用map指令来处理域名替换,比直接写正则更清晰易维护。

完整配置示例

# 先定义域名映射规则:把a系列域名替换成b系列
map $host $target_host {
    ~^(.*)\.a\.com$  $1.b.com;  # 匹配子域名,比如 blog.a.com → blog.b.com
    a.com           b.com;      # 匹配主域名,a.com → b.com
}

# 处理HTTP请求(80端口)
server {
    listen 80;
    server_name a.com *.a.com;

    # 301永久重定向到对应的HTTPS地址
    return 301 https://$target_host$request_uri;
}

# 可选:处理HTTPS请求(443端口)
# 注意:因为a.com没有SSL证书,用户访问时会先看到证书警告,但接受后仍会完成跳转
server {
    listen 443 ssl;
    server_name a.com *.a.com;

    # 这里可以用自签证书或者任意证书(只是为了让Nginx能启动443监听)
    ssl_certificate /path/to/your/fake-cert.crt;
    ssl_certificate_key /path/to/your/fake-cert.key;

    return 301 https://$target_host$request_uri;
}

配置说明

  • map块:专门用来做域名的正则匹配和替换,把所有*.a.com子域名映射到*.b.com,主域名a.com直接映射到b.com。
  • 80端口的server块:捕获所有a系列域名的HTTP请求,通过301重定向到HTTPS的b系列域名,保留原请求路径$request_uri。
  • 443端口的server块:处理可能的HTTPS请求(虽然用户访问会有证书错误,但如果用户选择继续访问,仍然会跳转到正确的b.com地址)。

这样配置后,不管是访问http://a.com/hello还是http://docs.a.com/article/123,都会自动跳转到https://b.com/hello和https://docs.b.com/article/123,完全符合你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:23:11