📝 Nginx 配置日志:裸域名不带www跳转到www + SSL 证书配置案例

社区话题 Linux/macOS 与自动化运维 📝 Nginx 配置日志:裸域名不带www跳转到www + SSL 证书配置案例

标签: 

  • 该话题包含 1 个回复、1 个参与人,并且最后由 追光1个月 前 更新。
正在查看 1 条回复
  • 作者
    帖子
    • #1222

      追光
      管理员

      以下是一份清晰、规范的 Nginx 配置日志说明,用于将 不带 www 的域名(newvfx.com)统一 301 跳转到带 www 的版本(www.newvfx.com),并包含正确的 SSL 证书配置。

      目标
      所有对 newvfx.com(HTTP 或 HTTPS)的访问,均 301 重定向到 https://www.newvfx.com$requesturi
      使用现有证书(路径已从配置中提取)
      确保跳转仅一次,避免链式重定向

      证书信息(来自现有配置)
      证书文件:/home/wwwroot/lnmp/etc/newvfx-lessl-ssl/newvfx-lessl.crt
      私钥文件:/home/wwwroot/lnmp/etc/newvfx-lessl-ssl/newvfx-lessl.key
      DH 参数:/home/wwwroot/lnmp/etc/newvfx-lessl-ssl/newvfx-lessl.pem
      ✅ 该证书已覆盖 http://www.newvfx.com,需确认是否包含 newvfx.com(建议包含,否则 HTTPS 裸域访问会报证书错误)

      🔧 Nginx 配置代码

      裸域名跳转规则:newvfx.com → https://www.newvfx.com
      作者:运维日志
      日期:2025-04-05
      说明:统一入口,避免 SEO 分散,提升安全性

      方法:在主server块之外 单独增加一个server块,单独定义不带www的域名newvfx.com,使用301重定向到www域名。建议将server块添加到主server块结束之后,而不是加到之前,很多面板的参数设置都会自动更改第一个server块,所以将其作为第二个server块来处理。

      HTTP 裸域名 → HTTPS www(一次跳转)

      server {
      listen 80;
      listen [::]:80;
      servername newvfx.com;
      return 301 https://www.newvfx.com$requesturi;
      }
      HTTPS 裸域名 → HTTPS www(一次跳转)
      server {
      listen 443 ssl http2;
      listen [::]:443 ssl http2;
      servername newvfx.com;
      
      #SSL 证书(复用现有证书)
      sslcertificate  /home/wwwroot/lnmp/etc/newvfx-lessl-ssl/newvfx-lessl.crt;
      sslcertificatekey /home/wwwroot/lnmp/etc/newvfx-lessl-ssl/newvfx-lessl.key;
      ssldhparam  /home/wwwroot/lnmp/etc/newvfx-lessl-ssl/newvfx-lessl.pem;
      
      #强制跳转
      return 301 https://www.newvfx.com$requesturi;
      }

      ✅ 验证方式

      1. 测试 HTTP 裸域:
      bash

      curl -I http://newvfx.com

      应返回:Location: https://www.newvfx.com/

      2. 测试 HTTPS 裸域:

      curl -I https://newvfx.com

      应返回:Location: https://www.newvfx.com/

      3. 检查证书是否包含裸域(避免浏览器警告):
      bash

      openssl x509 -in /home/wwwroot/lnmp/etc/newvfx-lessl-ssl/newvfx-lessl.crt -text | grep -A1 \"Subject Alternative Name\"

      输出应包含:

      DNS:newvfx.com, DNS:www.newvfx.com, …

      📌 注意事项
      若证书未包含 newvfx.com,请重新申请包含裸域的证书(如 Let\’s Encrypt 多域名证书)。
      此配置不影响 http://www.newvfx.com 的主站服务,主站应由另一个 server 块处理。
      重载 Nginx 后生效:nginx -s reload

      ✅ 最终效果:用户无论输入 http://newvfx.com、https://newvfx.com,均一次跳转至 https://www.newvfx.com/xxx,符合 SEO 与安全最佳实践。

    • #1375

      追光
      管理员

      在不带www的跳转到 www的时候不影响证书续期,必须要添加证书location

      server {
          listen 80;
          listen [::]:80; #listen end
      
          server_name newvfx.com; #server_name end
      
          # ✅ 必须添加:优先处理 ACME 验证路径(放在 return 之前!)
          location ^~ /.well-known/acme-challenge/ {
              root /home/wwwroot/lnmp/domain/towww/web;
              default_type text/plain;
              try_files $uri =404;
          }
      
          # 将所有 HTTP 请求 301 永久重定向(保留 host 和路径)
          return 301 https://$host$request_uri; #force_ssl end
      
          # 以下为 AMH 兼容字段(不影响逻辑)
          root /home/wwwroot/lnmp/domain/towww/web$subdomain;
          include /home/usrdata/amwaf/lnmp-towww.conf*;
          include /home/wwwroot/lnmp/rewrite/amh.conf; #rewrite end
      
          access_log /home/wwwroot/lnmp/logs/towww-access.log access;
          error_log /dev/null;
      }
正在查看 1 条回复
  • 在下方一键注册,登录后就可以回复啦。