HTTPS配置后API接口请求失败:跨域与证书_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://')。相对路径//开头的资源会自动适配协议,推荐用这种写法。
提醒几个关键注意点,避免操作失误。
监控告警要配置到位。服务器资源(CPU、内存、磁盘、网络)、服务状态(Nginx、PHP、MySQL)、网站可用性(HTTP状态码、响应时间)、安全异常(登录失败、文件变更),这些都要监控,异常时通过短信或邮件通知。
命令操作前先确认路径和参数。rm -rf删错目录、mv覆盖错文件、chmod改错权限,这些都是不可逆操作。执行前ls看一下当前目录,命令里用绝对路径,重要文件操作前先备份。
不要直接在生产环境试错。有条件搭测试环境,先验证操作步骤和配置效果,没问题再上生产。测试环境和生产环境配置尽量一致,PHP版本、数据库版本、服务器类型都要对应,避免测试通过生产出问题。
权限设置遵循最小原则。配置文件644,上传目录755,其他目录644或755。不要图省事全设777,任何用户都能写文件,有上传漏洞就会被写入webshell。文件属主设为web运行用户,不要用root。
实际操作中还会碰到一些衍生问题,这里一并说明。
问:网站需要装安全狗之类的防护软件吗?答:看情况。服务器层面防火墙和fail2ban是基础,网站层面WAF能拦截常见攻击。云服务器厂商自带的安全组和云WAF够用,不一定装第三方防护软件。第三方软件占资源,配置不当还可能误封,根据实际需求选择。
问:改完配置不生效怎么办?答:先确认改的是正在用的配置文件,多版本PHP或者多站点配置文件路径不一样。改完重载对应服务,清缓存包括CDN缓存和浏览器缓存。用无痕模式或者强制刷新(Ctrl+F5)测试。
网站维护是细致活,各类问题处理思路相通:先定位再动手,先备份再操作,先测试再上线。把这篇文章收藏,遇到对应问题对照步骤处理,节省大量排查时间。不清楚的地方建议测试环境验证后再上生产。

更新时间:2026-08-26 22:08:51
上一篇:MySQL数据库慢查询优化:索引添加与SQL语句调优_MySQL_MariaDB_数据库运维