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

Forge环境Nginx子域名重定向到外部域名配置问题咨询

Nginx子域名重定向配置解答

关于是否需要添加listen 80;规则

  • 必须添加。80端口是HTTP协议的默认监听端口,如果你的server块仅配置了443端口的SSL监听,所有访问http://shop.example.com的请求要么被其他默认server块捕获返回错误内容,要么直接无法建立连接,完全不会触发你配置的重定向逻辑。
  • 如果需要兼容IPv6访问,还需要同步添加listen [::]:80;配置,和你现有443端口的IPv6监听规则对应。

关于你写的重定向配置正确性

你当前的配置存在两处明显错误,无法正常生效:

  1. server_name参数不支持携带协议头。你写的server_name https://shop.example.com;是错误写法,该参数仅用于匹配请求头中的域名,不需要加https://前缀,正确写法为server_name shop.example.com;。
  2. 缺少HTTPS请求对应的SSL证书配置。你现有配置已经监听了443 ssl端口,如果不在server块中配置对应域名的SSL证书(可以复用服务器上已有的泛域名证书),用户访问https://shop.example.com时会在SSL握手阶段直接报错,根本无法收到301重定向响应。

另外你原有配置仅监听了80端口,完全没有处理443端口的HTTPS请求,会导致HTTPS访问无法跳转。

可直接使用的正确配置示例

# 处理80端口HTTP请求
server {
    listen 80;
    listen [::]:80;
    server_name shop.example.com;
    # 携带$request_uri可将原请求的路径、参数同步跳转到新域名,不需要可删除
    return 301 https://example2.com$request_uri;
}

# 处理443端口HTTPS请求
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name shop.example.com;

    # 替换为服务器上实际的SSL证书、私钥路径,Forge部署环境可直接复用同泛域名下其他站点的证书路径
    ssl_certificate /etc/nginx/ssl/shop.example.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/shop.example.com/privkey.pem;

    return 301 https://example2.com$request_uri;
}

配置生效注意事项

  • 修改完配置后先执行nginx -t命令检查语法是否存在错误,确认无误后再执行nginx -s reload重载Nginx服务让配置生效。
  • 如果不需要保留原请求的路径和参数,把$request_uri删掉即可,所有请求都会直接跳转到新域名的根路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:18:20