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

HTTPS下Nginx如何正确配置非www域名到www的重定向

正确实现HTTPS裸域到www域名重定向的配置方法

你之前新增443重定向server块报错,基本是两个配置冲突导致:一是重复设置了ipv6only=on监听参数,二是可能证书未覆盖裸域触发SSL层错误,按以下步骤调整即可:

前置检查

先确认你的Let's Encrypt证书包含裸域redvi.eu,如果之前签发时只绑定了www域名,执行以下命令重新签发包含两个域名的证书,避免重定向时触发证书不信任警告:

certbot --nginx -d www.redvi.eu -d redvi.eu

执行后证书路径不会变化,无需修改原有证书配置项。

配置调整

你只需要在现有配置基础上,新增一个独立的443端口server块专门处理裸域请求即可,注意不要和现有www站点的监听参数重复:

  • 保留原有80端口的HTTP跳转配置不变
  • 新增裸域HTTPS跳转server块,不要给这个块加ipv6only=on参数(同端口的IPv6监听仅允许一个server块设置该参数,重复配置会直接报错)
  • 原有www域名的443业务server块保持原有配置不动

完整配置参考如下:

# HTTP 统一跳转HTTPS的www域名
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name www.redvi.eu redvi.eu;
    return 301 https://www.redvi.eu$request_uri;
}

# HTTPS 裸域统一跳转www域名
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name redvi.eu;

    # 复用现有SSL证书配置
    ssl_certificate /etc/letsencrypt/live/www.redvi.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.redvi.eu/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    return 301 https://www.redvi.eu$request_uri;
}

# 原有www域名的业务服务配置
server {
  listen [::]:443 ssl ipv6only=on; # managed by Certbot
  listen 443 ssl; # managed by Certbot
  server_name www.redvi.eu;
  root /home/deploy/redvi/current/public;

  passenger_enabled on;
  passenger_app_env production;

  location /cable {
    passenger_app_group_name redvi_websocket;
    passenger_force_max_concurrent_requests_per_process 0;
  }

  client_max_body_size 100m;

  location ~ ^/(assets|packs) {
    expires max;
    gzip_static on;
  }

  ssl_certificate /etc/letsencrypt/live/www.redvi.eu/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/www.redvi.eu/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

生效验证

配置修改完成后,先执行配置校验命令,确认无报错再重载服务:

# 校验Nginx配置合法性
nginx -t

# 校验通过后重载配置生效
nginx -s reload

注意事项

  • 独立server块实现重定向是Nginx官方推荐的方案,不要在业务server块内使用if指令判断Host做跳转,if指令在server上下文存在多个已知的行为陷阱,容易出现不可预期的匹配错误。
  • 正式配置301永久跳转前,可以先把返回状态码改成302临时跳转,测试所有访问规则正常后再换回301,避免浏览器长期缓存错误的重定向规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:36:26