Skip to content

InvertGeek/mixlink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于反向代理的静态资源加速

已发布版本:https://github.com/InvertGeek/mixlink/releases

工作原理

  • 用户访问站点时,默认会转发原站返回的内容,相当于一个轻量级反向代理。
  • 当访问的 URL 命中特定后缀规则时,会将原站资源上传到加速服务。
  • 下次请求相同资源时,直接重定向到加速地址,不再消耗服务器带宽。

部署说明

  1. 需要先部署上传服务,推荐使用 directlink
  2. 上传服务接口填写为:directlink 服务地址 + /api/upload
  3. 启动服务后,编辑 config.yaml 文件,根据需求自行配置即可。

常见误区

本应用是基于反向代理实现的,并不是部署完成后在配置文件里写上网站域名, 原域名就能自动被“加速”。
这种操作神仙都做不到。

正确使用方式

假设你的网站当前运行在 80 端口(对外访问):

  1. 将原站服务修改到其他端口,例如 81
  2. 在 mixlink 中,将原站地址设置为 81 端口。
  3. 推荐使用 nginx 再次反代 mixlink,用于配置 HTTPS 证书和自定义请求头。
  4. mixlink 监听 82 端口,nginx 监听 80 端口 并反代到 82

访问流程:

用户 → nginx → mixlink → 原站

说明:

  • 如果原站本身就是 nginx,也可以反代自己,这是完全可行的。
  • 简单来说,把本应用当作 CDN 使用即可:
    • 原站是隐藏的
    • 用户只能通过 CDN(mixlink)访问网站

配置文件中的域名说明

  • 自定义 host 规则:当请求的 Host 请求头 匹配某字符串时,回源到对应站点。
  • _default 表示默认站点。
  • 不清楚什么是 Host 请求头的,可以直接问 AI。

⚠️ 注意:
不是随便写一个名字就行。
例如默认的 www_example_com,表示当访问域名为 www.example.com 时,回源到对应原站。

自定义缓存过期时间

  • 支持通过响应头自定义缓存过期时间。
  • 原站响应中携带 x-mixlink-expire 响应头即可。
  • 单位为 毫秒
    • 过期后会删除缓存并重新上传
    • 默认情况下 永不过期

链接失效处理

  • 每次重定向前都会检测加速链接是否可访问。
  • 若检测失败,会自动 fallback 到转发模式,无需担心访问中断。
  • 同一 URL 多次检测失效后,会自动删除缓存并重新上传资源。

已知问题

  • CSS 中存在相对路径引用时,可能导致路径错误。
  • 使用 ESM 语法 的 JS 相对路径引用同样会出问题。
    • 可使用 webpack 等构建工具将 ESM 编译为 CommonJS 规避。
  • 原因在于:相对路径是基于文件自身路径解析,而不是 HTML 页面路径。

GitHub Star

Stargazers over time