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

如何通过nginx.conf配置实现HTTPS域名www到非www的重定向

Nginx 配置全域名HTTPS场景下www到非www重定向方案

你之前的配置仅HTTP生效、HTTPS下失效,核心问题有两点:

  • 配置默认仅监听80端口,没有配置带SSL参数的443端口监听块,HTTPS请求根本不会进入这个重定向逻辑
  • 正则规则写反了:~^(?!www\.).*是匹配非www开头的域名,和你要匹配www开头域名做跳转的需求完全相反,同时正则没有设置捕获组,$1变量无法获取到去掉www的域名主体

正确配置步骤

首先提前准备好覆盖所有业务域名的泛域名SSL证书(需同时匹配*.你的域名和根域名,否则HTTPS握手阶段会报证书不可信错误),然后在nginx.conf中添加两个专门处理重定向的server块:

# 承接HTTP协议下所有www开头的域名请求,跳转到非www地址
server {
    listen 80;
    server_name ~^www\.(?<root_domain>.+)$;
    return 301 $scheme://$root_domain$request_uri;
}

# 承接HTTPS协议下所有www开头的域名请求,跳转到非www地址,是你之前缺失的核心配置
server {
    listen 443 ssl http2;
    # 替换为你自己的泛域名证书公钥、私钥路径
    ssl_certificate /your/ssl/path/wildcard_domain.crt;
    ssl_certificate_key /your/ssl/path/wildcard_domain.key;
    # 可按需补充常用的SSL优化配置,比如ssl_protocols、ssl_ciphers等
    server_name ~^www\.(?<root_domain>.+)$;
    return 301 https://$root_domain$request_uri;
}

配置注意事项

  • 上面的正则用了命名捕获组?<root_domain>,会自动把www.后面的域名部分存为$root_domain变量,比数字编号的捕获组稳定性更高,不会因为正则调整出现变量取值错误
  • 两个重定向server块要放在所有正常业务server块的前面,保证Nginx优先匹配到www开头的请求做跳转,不会被其他业务规则拦截
  • 如果你没有泛域名证书,只有单域名SSL证书,无法用这种通配规则批量处理,只能针对每个域名单独写重定向server块,否则会出现证书域名不匹配的安全警告
  • 配置完成后执行nginx -t校验配置语法无误,再执行nginx -s reload重载配置即可生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:15:58