宝塔面板+Nginx配置HTTP强制跳转HTTPS:解决网站不安全提示、重定向循环问题(适配CDN)

宝塔面板+Nginx配置HTTP强制跳转HTTPS:解决网站不安全提示、重定向循环问题(适配CDN)
前言
部署网站安装SSL证书之后,很多站长都会遇到一个常见难题:明明已经上传并成功启用SSL证书,但是用户在浏览器输入不带https的http域名访问网站时,地址栏依旧显示“不安全”警告。部分场景下开启强制跳转之后,还会出现重定向过多、死循环跳转、CDN环境下跳转失效等棘手问题。

HTTP协议传输数据明文,存在被窃听、篡改的风险;HTTPS依靠SSL证书对传输内容加密,是现代网站的基础要求,同时也是搜索引擎收录、小程序对接、第三方API接口调用的硬性前提。本文结合宝塔面板,分别讲解可视化一键配置、Nginx自定义代码配置两种方案,同时梳理CDN环境、反向代理场景下的踩坑点。

一、前置准备工作

  1. 域名已经完成解析,服务器80、443端口在服务器安全组/防火墙放行;云服务器可参考https://act.tag.org.cn
  2. 网站SSL证书已经申请完成(宝塔Let’s Encrypt免费证书、阿里云/腾讯云付费证书均可),并且在站点SSL页面成功部署;
  3. 如果网站接入CDN,需要在CDN控制台同步上传证书,CDN节点开启HTTPS,否则会出现跳转死循环。

重要提醒:如果使用CDN,不能只在源站宝塔配置跳转,源站直接强制跳转容易出现循环重定向,需要区分【CDN回源协议】。

二、方案一:宝塔面板可视化一键开启强制HTTPS(新手推荐)

  1. 登录宝塔面板后台,点击左侧菜单【网站】,找到目标站点,点击右侧【设置】按钮;
  2. 在弹出站点设置窗口,切换到【SSL】标签页;
  3. 在SSL配置区域往下滚动,找到强制HTTPS开关,点击开启;
  4. 保存配置,Nginx会自动重载配置。

开启之后,宝塔会自动生成Nginx配置,监听80端口的所有访问请求,301永久重定向跳转到HTTPS地址。
优点:操作简单,不需要手写代码;
缺点:高级自定义场景受限,接入CDN之后该功能可能失效。

QQ20260923-180440

三、方案二:Nginx自定义配置代码实现HTTP转HTTPS(高级场景)
进入站点设置,点击【配置文件】,找到listen 80;相关代码块,将下面完整server配置写入,放在配置文件最上方。

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

代码说明:

  • listen 80;:监听http默认80端口;
  • server_name:填写你的域名,多个域名空格隔开;
  • return 301:301属于永久重定向,利于SEO,$host自动获取访问域名,$request_uri保留访问路径、GET参数,不会丢失页面地址。

如果想要临时测试,可把301改为302临时重定向;测试完成后务必换回301,避免搜索引擎收录异常。

写完代码点击【保存】,宝塔会自动重载Nginx配置。重载成功之后,访问http://域名会自动跳转到https://域名。

四、高频报错问题排查(重点)
问题1:重定向过多,无限跳转死循环
现象:浏览器提示“该网页重定向次数过多”,网页打不开。
常见原因:

  1. 源站开启强制HTTPS,同时CDN节点回源协议使用HTTPS,CDN收到请求转发源站,源站继续跳转,形成循环;
    解决方案:CDN场景下,源站不要开启强制HTTPS,在CDN控制台配置HTTP跳转HTTPS,CDN节点层面完成跳转。

  2. Nginx配置重复,多处同时写了跳转规则;
    解决方案:打开站点配置文件,删除多处重复的return/rewrite跳转代码,只保留一处监听80端口的跳转server块。

问题2:开启跳转之后,部分静态资源报错混合内容Mixed Content
现象:网站HTTPS打开了,但是图片、JS、CSS样式加载失败,浏览器控制台提示混合内容。
原因:网页源码里面写死了http://开头的静态资源地址,页面是HTTPS协议,但是资源请求HTTP,浏览器安全策略拦截资源。
解决办法:

  1. 修改网站程序源码,把所有硬编码http资源链接改成https;
  2. 使用协议相对路径写法 //domain.com/static/xxx.jpg,自动适配当前访问协议。

问题3:手机/浏览器缓存,配置修改后不生效
现象:服务器配置已经保存,但是手机访问http依旧不跳转。
原因:浏览器缓存了旧的重定向状态。
排查:使用浏览器无痕模式访问测试;电脑端可清除浏览器缓存。

问题4:80端口被占用,配置保存报错
宝塔保存Nginx配置提示端口占用。
排查:在宝塔【网站】或者【安全】菜单查看,确认其他站点占用80端口,关闭多余站点或者修改冲突站点配置。

五、CDN环境适配注意事项

  1. 接入CDN场景,优先在CDN控制台设置HTTP跳转HTTPS,源站关闭强制跳转;
  2. CDN回源方式选择:CDN节点使用HTTPS访问源站时,源站不要开启http强制跳转;
  3. CDN证书必须和域名匹配,CDN不配置证书,仅源站配置证书会导致访问异常。

六、补充:HSTS安全头增强配置(可选)
在HTTPS对应的443端口server块内增加头部,浏览器第一次访问HTTPS成功之后,后续访问直接禁止HTTP请求,进一步杜绝http访问。

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

HSTS一旦生效,浏览器会缓存很长时间,测试阶段不建议直接开启。

总结
普通个人站点、中小型网站,直接使用宝塔面板自带【强制HTTPS】开关,开箱即用;需要精细化控制、多域名、反向代理业务场景,手动添加Nginx 80端口server块配置。
遇到跳转异常优先判断网站是否接入CDN,CDN场景是跳转死循环最高发场景。部署完成,记得用无痕窗口测试,同时检查页面有没有http静态资源,解决混合内容警告,保证网站在浏览器地址栏展示安全锁标识。

posted @ 2026-09-23 18:06  BLOGAME  阅读(20)  评论(0)    收藏  举报