前言

昨天,老张开始使用雷池做前端,反代后端的机器,配置起来很简单,但是反代后,wordpress的样式丢失了,而且后台也进不去。

我本以为是宝塔的SSL的跳转的问题,结果实际上老张的宝塔上面一看,完全没有问题。但是进管理后台一台提示重定向次数过多。而且查看源代码也发现是因为css引用是使用的http://,所以导致无法加载(https://的站点是无法加载http://站点的内容的,不管是js,css,还是图片)。

结论

分析下来,应该是wordpress的问题了,因为是回源是使用的http走的80端口,所以导致wordpress误以为是http网站,使用了http协议。

回源

这里说一下回源,我们建议前端使用 https,回源使用 http,如下

这样子的好处是,前端使用CF证书,我们不需要操心,CF回源使用http,不需要证书,也不需要操心,这样不需要定期去更新证书了。

老张使用的是 雷池 ,所以如下图

这就是CF的SSL里边的灵活模式,如果CF选择严格模式,那么cf回源服务器也会走SSL,就需要源服务器有可信任的证书了。

处理方法

知道问题所在了,那么问题也就迎刃而解了,wordpress是根据http的协议来判断的,我们只需要强制他走 https 即可。

编辑 wp-settings.php ,在 <? php 下增加一行

$_SERVER['HTTPS'] = 'on';

那么,wordpress会默认现在是 https,就不会再使用 http 相关内容了,问题也就解决了。如下图

总结

@AI 帮我总结一下。

    #1 James ### 总结

    在使用雷池进行前端代理和后端反向代理时,老张遇到了WordPress样式丢失和后台无法访问的问题。初步分析认为是SSL跳转的问题,但检查后发现实际上宝塔配置没有问题。更深入的分析显示,网站在反向代理期间,由于回源使用HTTP协议,导致WordPress误认为站点也是HTTP,从而加载了错误的资源(CSS、JS等),最终导致样式丢失和重定向过多的错误。

    为了解决这一问题,建议采取以下步骤:

    1. 确保前端使用HTTPS,回源采用HTTP:这样可以利用Cloudflare(CF)的证书,免去直接在源服务器上处理SSL证书的烦恼,简化维护和更新。
    2. 更新WordPress配置:在wp-settings.php文件中添加$_SERVER['HTTPS'] = 'on';一行代码,以强制WordPress将网站协议识别为HTTPS,这样可以防止出现HTTP资源加载的问题。

    通过以上方法,最终达到了正确加载资源并解决了访问问题,确保了WordPress的正常运行。

    感谢感谢!否则不知道我还要折腾多久!!

    如果用saas了的话,只能选完全吧,不然也会重定向次数过多