You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过NGINX将特定子域名重定向至其他网站并保留SSL及原有站点配置

如何通过NGINX将特定子域名重定向至其他网站并保留SSL及原有站点配置

嘿,这个需求其实很好实现,咱们只需要在你现有的NGINX配置里新增两个专门的server块——分别处理media.website.com的HTTP和HTTPS请求就行,完全不会干扰你现在主站的正常运行和HTTP转HTTPS的逻辑。

第一步:处理HTTP的子域名重定向

在你现有的HTTP Redirect server块下面,新增一个针对media.website.com的80端口监听块,直接把HTTP请求重定向到目标地址(比如你要转到https://your-target-domain.com):

# 新增:处理media子域名的HTTP请求
server {
    listen 80;
    listen [::]:80;
    server_name media.website.com;

    # 这里把目标地址改成你实际要跳转的域名/地址,保留请求URI的话加上$request_uri
    return 301 https://your-target-domain.com$request_uri;
}

第二步:处理HTTPS的子域名重定向

同样,在你现有的HTTPS Server块下面,新增一个针对media.website.com的443端口SSL监听块,注意要复用你现有的SSL证书(前提是你的证书已经包含media.website.com这个子域名,或者是通配符证书):

# 新增:处理media子域名的HTTPS请求
server {
    listen 443 ssl;
    server_name media.website.com;

    ssl_certificate      bitnami/certs/server.crt;
    ssl_certificate_key  bitnami/certs/server.key;

    # 同样,替换成你的目标地址,保留请求URI就加$request_uri
    return 301 https://your-target-domain.com$request_uri;
}

为什么这么配置?

  • 原来的HTTP Redirect server块(server_name _)会处理所有未匹配到其他server块的HTTP请求,所以主站的HTTP请求依然会正常转HTTPS;
  • 新增的两个server块会精准匹配media.website.com的HTTP/HTTPS请求,直接重定向到你想要的目标地址;
  • 主站的HTTPS server块完全不动,依然处理website.com的HTTPS请求,不受任何影响。

注意事项

如果你的SSL证书不包含media.website.com,访问https://media.website.com时会出现证书错误。这种情况下,你需要更新证书(添加该子域名)或者使用通配符证书(比如*.website.com)。

最后,修改完配置后记得重启NGINX让配置生效:

sudo systemctl restart nginx
# 如果你用的是Bitnami的NGINX,可能需要用这个命令:
sudo /opt/bitnami/ctlscript.sh restart nginx

备注:内容来源于stack exchange,提问作者Rietty

火山引擎 最新活动