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

Nginx单个子域名重定向问题求助

解决Nginx指定子域名重定向问题

问题根源

你的现有配置存在两个核心问题:

  1. 第一个未指定listen端口的server块会被Nginx当作默认匹配规则之一,干扰精确子域名的匹配逻辑
  2. HTTPSserver块中,重定向规则目标URL不完整(缺少.com),且location /块的存在容易引发规则执行顺序混淆

修正后的配置

1. 完整配置代码

# 处理该子域名的HTTP请求,直接重定向到外部URL
server {
    listen 80;
    server_name foo-bar.test.com.au;
    rewrite ^ https://externalURL.com permanent;
}

# 处理该子域名的HTTPS请求,执行重定向
server {
    listen 443 ssl http2;
    server_name foo-bar.test.com.au;

    # 永久重定向(301),临时重定向可改用redirect(302)
    rewrite ^ https://externalURL.com permanent;

    # SSL相关配置保留
    ssl_certificate /etc/ssl/foo-bar.crt;
    ssl_certificate_key /etc/ssl/foo-bar.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_session_timeout 30m;

    # 重定向后不会执行到以下内容,可直接删除
    # root /opt/nginx-static/foo-bar;
    # location / {
    #     root /opt/nginx-static/foo-bar;
    #     index index.html foo-bar.html;
    #     autoindex on;
    # }
}

2. 关键调整说明

  • 删除了无listen端口的冗余server块,避免默认匹配干扰
  • 补全了重定向目标URL的.com后缀,确保跳转地址正确
  • 为HTTP(80端口)单独配置server块,覆盖该子域名的所有访问场景
  • 移除了不必要的root和location配置,因为重定向会直接返回响应,不会执行后续内容

验证步骤

  1. 检查Nginx配置语法:
nginx -t
  1. 重启Nginx生效:
systemctl restart nginx
  1. 测试重定向效果:
curl -I https://foo-bar.test.com.au

返回结果应包含Location: https://externalURL.com,且其他子域名不受影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:50:26