博客源站恢复使用80端口
我的博客目前用的是新网的虚拟主机,然后在套上阿里云免费版的ESA,这样基本上可以做到性价比与访问速度兼顾。不过,和其他的国内虚拟主机一样,新网的虚拟主机也是使用的自研面板,由于这些面板都比较的“古老”了,所以对于像SSL证书之类的新生事物的兼容性都挺一般的。
就以新网的虚拟主机为例,一台虚拟主机只支持一个域名启用SSL证书。如果使用子域名建站倒是无所谓,但是如果使用顶级域名的话,那就不得不在www和@之间二选一了,另一个只能用跳转来解决。如果说这个问题还不算太大的话,那么这些国内的虚拟主机申请SSL证书的逻辑就让人有些不能接受了。要么就是没有免费版的提供,要么就是必须用CNAME解析到虚拟主机的别名才可以,这样ESA就无法使用了。
另外,由于现在免费版的SSL证书都只有90天的有效期,因此如果在虚拟主机上使用第三方免费版的SSL,那就必须每三个月更新一次证书,未免有些过于麻烦。所以,我决定把虚拟主机上的源站取消使用SSL证书,而ESA上则继续使用能自动续订的免费证书,一劳永逸。
不过,当我取消源站的SSL证书之后,问题随之而来。网站访问倒是正常,但是后台却出现了CSS/JS/ 图片加载失败、排版错乱的情况。这应该是博客程序误判网站协议为 HTTP,输出大量http://资源链接造成的。至于究竟是程序本身的原因,还是我设置的问题,抑或是虚拟主机兼容性不佳,那就不得而知了。
我向AI寻求帮助,AI很快给出了解决的方案。首先是在阿里云ESA里增加一条转换规则,修改请求头名称为X-Forwarded-Proto,值为https。然后修改typecho的config.inc.php文件,在开头的<?php下面粘贴以下内容:
// 适配阿里云 ESA(X-Forwarded-Proto)
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}
// 强制全站 HTTPS
define('__TYPECHO_SECURE__', true);
// 固定站点域名(建议加上,防止偶尔跳 http)
// define('__TYPECHO_SITE_URL__', 'https://你的域名');但是,当我按照AI的方法修改之后却出现了更严重的问题,博客网址被新网给拦截了,提示未备案。再次询问AI,告知之前在阿里云ESA强制加的X-Forwarded-Proto:https回源被新网的检测系统判定为“跨接入商违规 / 未备案接入”,所以直接拦截了。AI重新给出了解决办法,改用不依赖XFP的 HTTPS适配代码:
// 新网虚拟主机 + 阿里云ESA 专用(不检测XFP,避免拦截)
if (!empty($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'https://') === 0) {
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}
// 强制全站HTTPS
define('__TYPECHO_SECURE__', true);
define('__TYPECHO_SITE_URL__', 'https://你的域名');重新修改之后,排版混乱的后台终于恢复正常了,我也不用再记挂着SSL证书的有效期了。
这种虚拟机是无法安装自己的面板对吗
是的
他们家虚拟机php最大能切到哪个版本
8.3