edgeone 代理 typecho

这是我新搭建的生活博客,用edgeone加速, https://blog.deffun.top, 遇到一个问题, 就是edgeone 代理我的博客,就是不论怎么配置,生成的文章地址都是源站地址。

在gemini3 pro的帮助下,解决了。 这里记录下。

edgeone 配置

静态资源可以缓存,非静态资源就没必要缓存了, html 是动态生成的, 也不需要缓存

typecho 配置

config.inc.php 的最后面加上

1
2
3
4
5
6
/** 1. 欺骗 Typecho,让它认为当前域名是 blog.deffun.top */
$_SERVER['HTTP_HOST'] = 'blog.deffun.top';

/** 2. 告诉 Typecho 当前是 HTTPS 访问 (防止循环重定向和样式丢失) */
$_SERVER['HTTPS'] = 'on';
define('__TYPECHO_SECURE__', true);

在前面, 我们edgeone 配置的 hosts 是源站地址,如果配置成加速站地址,会404,因为nginx 是根据 host字段来判断调用哪个服务的,你的加速地址没有在nginx里面绑定,所以会返回404,但是edgeone 回源host是源站第hi, typecho 生成的代码就会是源站地址, 所以要需要强行设置一下typecho的http_host

那是否有办法判断是哪个加速域名访问了源站呢, referer 是个不错的选择