宝塔面板+Nginx配置HTTP强制跳转HTTPS:解决网站不安全提示、重定向循环问题(适配CDN)
宝塔面板+Nginx配置HTTP强制跳转HTTPS:解决网站不安全提示、重定向循环问题(适配CDN)
前言
部署网站安装SSL证书之后,很多站长都会遇到一个常见难题:明明已经上传并成功启用SSL证书,但是用户在浏览器输入不带https的http域名访问网站时,地址栏依旧显示“不安全”警告。部分场景下开启强制跳转之后,还会出现重定向过多、死循环跳转、CDN环境下跳转失效等棘手问题。
HTTP协议传输数据明文,存在被窃听、篡改的风险;HTTPS依靠SSL证书对传输内容加密,是现代网站的基础要求,同时也是搜索引擎收录、小程序对接、第三方API接口调用的硬性前提。本文结合宝塔面板,分别讲解可视化一键配置、Nginx自定义代码配置两种方案,同时梳理CDN环境、反向代理场景下的踩坑点。
一、前置准备工作
- 域名已经完成解析,服务器80、443端口在服务器安全组/防火墙放行;云服务器可参考https://act.tag.org.cn
- 网站SSL证书已经申请完成(宝塔Let’s Encrypt免费证书、阿里云/腾讯云付费证书均可),并且在站点SSL页面成功部署;
- 如果网站接入CDN,需要在CDN控制台同步上传证书,CDN节点开启HTTPS,否则会出现跳转死循环。
重要提醒:如果使用CDN,不能只在源站宝塔配置跳转,源站直接强制跳转容易出现循环重定向,需要区分【CDN回源协议】。
二、方案一:宝塔面板可视化一键开启强制HTTPS(新手推荐)
- 登录宝塔面板后台,点击左侧菜单【网站】,找到目标站点,点击右侧【设置】按钮;
- 在弹出站点设置窗口,切换到【SSL】标签页;
- 在SSL配置区域往下滚动,找到强制HTTPS开关,点击开启;
- 保存配置,Nginx会自动重载配置。
开启之后,宝塔会自动生成Nginx配置,监听80端口的所有访问请求,301永久重定向跳转到HTTPS地址。
优点:操作简单,不需要手写代码;
缺点:高级自定义场景受限,接入CDN之后该功能可能失效。

三、方案二: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:重定向过多,无限跳转死循环
现象:浏览器提示“该网页重定向次数过多”,网页打不开。
常见原因:
-
源站开启强制HTTPS,同时CDN节点回源协议使用HTTPS,CDN收到请求转发源站,源站继续跳转,形成循环;
解决方案:CDN场景下,源站不要开启强制HTTPS,在CDN控制台配置HTTP跳转HTTPS,CDN节点层面完成跳转。 -
Nginx配置重复,多处同时写了跳转规则;
解决方案:打开站点配置文件,删除多处重复的return/rewrite跳转代码,只保留一处监听80端口的跳转server块。
问题2:开启跳转之后,部分静态资源报错混合内容Mixed Content
现象:网站HTTPS打开了,但是图片、JS、CSS样式加载失败,浏览器控制台提示混合内容。
原因:网页源码里面写死了http://开头的静态资源地址,页面是HTTPS协议,但是资源请求HTTP,浏览器安全策略拦截资源。
解决办法:
- 修改网站程序源码,把所有硬编码http资源链接改成https;
- 使用协议相对路径写法
//domain.com/static/xxx.jpg,自动适配当前访问协议。
问题3:手机/浏览器缓存,配置修改后不生效
现象:服务器配置已经保存,但是手机访问http依旧不跳转。
原因:浏览器缓存了旧的重定向状态。
排查:使用浏览器无痕模式访问测试;电脑端可清除浏览器缓存。
问题4:80端口被占用,配置保存报错
宝塔保存Nginx配置提示端口占用。
排查:在宝塔【网站】或者【安全】菜单查看,确认其他站点占用80端口,关闭多余站点或者修改冲突站点配置。
五、CDN环境适配注意事项
- 接入CDN场景,优先在CDN控制台设置HTTP跳转HTTPS,源站关闭强制跳转;
- CDN回源方式选择:CDN节点使用HTTPS访问源站时,源站不要开启http强制跳转;
- 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静态资源,解决混合内容警告,保证网站在浏览器地址栏展示安全锁标识。

部署网站安装SSL证书之后,很多站长都会遇到一个常见难题:明明已经上传并成功启用SSL证书,但是用户在浏览器输入不带https的http域名访问网站时,地址栏依旧显示“不安全”警告。部分场景下开启强制跳转之后,还会出现`重定向过多`、死循环跳转、CDN环境下跳转失效等棘手问题。
浙公网安备 33010602011771号