HTTPS网站混合内容警告解决:HTTP资源替换_HTTPS_SSL证书_
站长经常问HTTPS怎么处理。网上教程不少,但很多写得太笼统,关键步骤一带而过。这里按实际运维经验,把完整流程分成几个阶段,每个阶段给出具体操作和验证方法。
Let's Encrypt免费证书用的人多,申请失败的情况也常见。域名解析不对、80端口不通、验证文件访问不到、申请频率超限,这些原因占了失败案例的大部分。
具体怎么操作呢?分以下几个步骤。
申请SSL证书先确认域名解析正确。A记录指向服务器IP,或者CNAME指向CDN。Let's Encrypt用certbot命令申请,certbot certonly --webroot -w /网站根目录 -d 域名.com -d www.域名.com。验证文件自动放在.well-known目录,80端口要能访问。
证书安装到Nginx。配置文件里ssl_certificate指向fullchain.pem,ssl_certificate_key指向privkey.pem。监听443端口,开启ssl。ssl_protocols用TLSv1.2 TLSv1.3,ssl_ciphers用高强度加密套件。配置完nginx -t测试语法,再reload。
强制HTTPS跳转。80端口的server块里return 301 https://$host$request_uri。注意CDN环境下要判断X-Forwarded-Proto,避免跳转死循环。if ($http_x_forwarded_proto != 'https') { return 301 https://$host$request_uri; }
检查混合内容。页面里的图片、CSS、JS如果还是HTTP链接,浏览器会提示不安全。数据库批量替换UPDATE article SET content=REPLACE(content,'http://','https://')。相对路径//开头的资源会自动适配协议,推荐用这种写法。
做的过程中注意以下事项。
CDN环境下改配置注意缓存。改了文件要刷新CDN缓存,否则用户看到旧内容。HTTPS证书要在CDN和源站都装,回源协议要对应。获取真实IP要配置real_ip,否则IP限制和日志都不准。
表单和用户输入要做验证和过滤。前端验证提升体验,后端验证保证安全,前端可以绕过所以后端必须做。SQL用参数化查询防注入,输出用htmlspecialchars防XSS,上传文件校验类型和大小并重命名。
权限设置遵循最小原则。配置文件644,上传目录755,其他目录644或755。不要图省事全设777,任何用户都能写文件,有上传漏洞就会被写入webshell。文件属主设为web运行用户,不要用root。
处理过程中有人问得比较多的问题,整理在下面。
问:数据库密码忘记了怎么办?答:有服务器权限的话MySQL安全模式启动重置密码,或者看网站配置文件里存的数据库密码。宝塔面板在数据库管理里能看密码(点眼睛图标)。没服务器权限找主机商重置。
问:服务器配置怎么选?答:根据网站流量和程序类型选。小型企业站1核2G够用,中型站点2核4G,大型或者高并发4核8G以上。数据库和应用放同一台服务器起步,流量大了再分离。带宽按同时在线人数估算,一般3M到5M起步。
技术问题最怕一知半解就动手改配置。这个功能涉及几个配置项联动,改一个不改另一个就会出问题。这篇文章把关联配置都列出来了,按顺序操作不会漏项。改完做一轮全面测试,确认没问题再收尾。

更新时间:2026-08-27 10:53:12