HTTPS跳转失败,Nginx配置错误修复

网站配好SSL证书后,访问http://域名却没有跳到https://,或者浏览器提示“重定向次数过多”,大概率是Nginx里跳转规则写错了。
下面按从易到难的顺序,带你检查配置、修正规则并验证结果。

先确认证书和443端口是否真正生效

在改跳转之前,先排除证书本身的问题。
如果443端口没通,任何跳转都会失败。

  • 检查Nginx是否监听443端口:
ss -tlnp | grep nginx

正常应看到 0.0.0.0:443[::]:443
如果只有80端口,说明SSL配置块没加载。

  • 检查证书文件路径是否存在且可读:
ls -l /etc/nginx/ssl/yourdomain.crt
ls -l /etc/nginx/ssl/yourdomain.key

路径不对会导致Nginx启动失败,用 nginx -t 测试时会报 cannot load certificate

  • 用curl直接测试HTTPS是否返回200:
curl -I https://yourdomain.com

如果返回 SSL certificate problem 或连接被拒,先解决证书和监听问题,再处理跳转。

检查跳转规则写在了哪里

跳转失败最常见的原因是规则位置不对。
Nginx的server块分为80端口和443端口两部分,跳转规则应该写在80端口的server里。

一个正确的强制HTTPS跳转配置如下:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/yourdomain.crt;
    ssl_certificate_key /etc/nginx/ssl/yourdomain.key;

    location / {
        root /var/www/html;
        index index.html;
    }
}

关键点:

  • return 301 必须放在80的server块里,不要放在443的server块里,否则会形成死循环。
  • $host 会自动带上用户访问的域名,$request_uri 保留原始路径和参数。
  • 如果用了CDN或反向代理,需把 $host 换成实际域名,避免跳转到内网地址。

改完后执行:

nginx -t && nginx -s reload

排查重定向循环与混合内容

浏览器提示“重定向次数过多”,通常是因为443的server块里又写了一次跳转到https。
检查443配置中是否误加了类似 return 301 https://... 的语句,有则删除。

另一种情况是页面能打开但样式丢失,控制台报 Mixed Content
这说明HTML里还写着http://的资源地址。
解决方法:

  • 把页面里所有 http:// 改成 https:////
  • 如果用了WordPress,在后台设置里把站点地址改为https,并安装SSL插件替换数据库中的旧链接。

验证跳转是否真正生效

配置重载后,用以下命令确认跳转链路:

curl -I http://yourdomain.com

预期结果:

HTTP/1.1 301 Moved Permanently
Location: https://yourdomain.com/

再测试带路径的地址:

curl -I http://yourdomain.com/about

应返回 Location: https://yourdomain.com/about,路径不丢失才算正确。

最后用浏览器无痕模式访问,避免缓存干扰。
如果仍然跳转失败,检查防火墙是否放行443端口:

firewall-cmd --list-ports | grep 443

几个容易踩的坑

  • 宝塔面板用户:在“网站-设置-SSL”里开启“强制HTTPS”后,如果仍不跳转,检查“配置文件”中是否同时存在面板生成的跳转和手动添加的跳转,重复规则会导致冲突。
  • 多个域名共用一个server块时,server_name 要写全,否则部分域名不会触发跳转。
  • 使用Cloudflare等CDN时,SSL/TLS模式建议设为“完全”或“完全(严格)”,设为“灵活”会导致源站收到http请求,可能引发循环。
  • 修改配置后务必先 nginx -t 测试语法,再reload,避免直接重启导致网站中断。

按以上步骤逐项检查,绝大多数HTTPS跳转失败都能定位到具体配置行。
如果问题依旧,保留 nginx -tcurl -I 的输出,便于进一步分析。

分享到:
上一篇
免费SSL证书申请与自动续期,CMS站点适用
下一篇
网站证书过期导致访问报错,应急处理
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意