收起左侧

阿里云 ESA 个人导航页

2
回复
280
查看
[ 复制链接 ]

10

主题

59

回帖

0

牛值

初出茅庐

根据@nanny的文章把外网访问搞定,就是导航页又点单调,给AI又迭代了几十个版本,现在可以后台编辑、分类,好用多了!分享给大家!
巧用阿里ESA,外网V4访问NAS,隐藏端口号,个人导航页全搞定
https://club.fnnas.com/forum.php?mod=viewthread&tid=49169
(出处: 飞牛私有云论坛 fnOS)

ScreenShot_2026-01-08_152351_346.png

阿里云 ESA 个人导航页 (单文件 SSR 版)

这是一个基于阿里云边缘安全加速 (ESA) 的无服务器个人导航页项目。
所有功能(主页、后台、API)都整合在一个边缘函数中,无需配置 Pages,部署极其简单。

  • 极速访问: 基于 ESA 边缘节点,全球加速。
  • 服务端渲染 (SSR): 首屏加载快,SEO 友好。
  • 在线管理: 内置管理后台,随时随地修改链接。
  • 动态分类: 支持按分类(如 media, books)分组展示。

目录结构

  • src/worker.js: 核心代码(包含 HTML 模板和业务逻辑)

部署指南

1. 准备工作

确保你已经开通了阿里云 ESA 服务,并且有一个可用的站点(域名)。

2. 配置边缘 KV (Edge KV)

  1. 进入 ESA 控制台 -> 边缘计算 -> Edge KV
  2. 创建一个新的命名空间,例如命名为 nav_data(推荐使用仅小写英文字母、数字、下划线,避免空格和中文)。
  3. 记下这个命名空间名称。
  4. 注意命名空间要与函数配置保持一致,否则读取不到数据或密码。

3. 部署边缘函数 (Edge Routine)

  1. 进入 ESA 控制台 -> 边缘计算 -> 边缘函数
  2. 创建一个新的函数,例如命名为 nav-ssr
  3. 进入代码编辑器,将本项目 src/worker.js 的内容完全覆盖进去。
  4. 配置环境变量:
    • 添加环境变量 EDGEKV_NAMESPACE,值为你在 Edge KV 中创建的命名空间(如 nav_data)。不设置时,代码将使用默认命名空间 links_store
    • 可选:添加环境变量 ADMIN_PASSWORD 作为后备密码(备用来源)。
  5. 点击 保存并部署

4. 配置路由 (关键步骤)

为了让整个网站生效,你需要将域名下的所有请求转发给这个函数。

  1. 在 ESA 站点管理中,找到 边缘函数 -> 触发器
  2. 添加一个路由触发器:
    • 路由模式: nav.example.com/* (匹配所有路径)
    • 关联函数: 选择刚才部署的 nav-ssr

5. 使用说明

  1. 访问主页: 打开 https://nav.example.com/
    • 初次访问会显示默认的示例数据(B站、腾讯视频等)。
  2. 进入后台: 打开 https://nav.example.com/admin
  3. 管理链接:
    • 输入你设置的密码登录(密码来源见下文“密码设置与优先级”)。
    • 添加链接时,可以指定 分类 ID (例如 media, books, tools),首页会自动按分类分组展示。
    • 点击“保存更改到服务器”以生效。

密码设置与注意事项

密码支持两种来源(有优先级):

  1. Edge KV 中的键 ADMIN_PASSWORD(优先)
  2. 环境变量 ADMIN_PASSWORD
  3. 若以上都未设置,则默认密码为 admin

如何通过 KV 设置密码:

  • 在你创建的命名空间(如 nav_data)里新建键:Key=ADMIN_PASSWORD,Value=你的密码(例如 admin@2022!
  • 值请避免前后空格与换行;复制粘贴时注意不要带不可见字符
  • 更新后可能存在边缘节点同步的短暂延迟,建议刷新后台页面重试

认证方式:

  • 后端认证接口路径:/api/auth
  • 请求头必须包含:Authorization: Bearer <你的密码>
  • 管理后台会在登录时自动调用该接口进行校验

命名空间与函数配置的匹配:

  • 代码会读取环境变量 EDGEKV_NAMESPACE 指定的命名空间;不设置时使用默认 links_store
  • 如果你把密码写到另一个命名空间里,而函数仍指向默认命名空间,会导致密码“看起来不生效”
  • 如需更改命名空间,建议优先通过环境变量 EDGEKV_NAMESPACE 指定,避免修改代码

常见问题与解决:

  • 登录总是失败:检查命名空间是否一致;Key 名必须严格为 ADMIN_PASSWORD;值无多余空格或换行
  • 输入过一次错误密码后仍失败:清除浏览器本地存储中的 esa_nav_token,重新登录
  • 密码更新后不生效:等待片刻并刷新页面;确保更新的是正确命名空间

相关代码参考:

故障排查

  • 读取不到数据或密码: 检查 EDGEKV_NAMESPACE 是否与实际命名空间一致;或确认 KV 中 ADMIN_PASSWORD 是否写入在正确命名空间。
  • 保存失败 (401): 检查当前使用的密码与 KV/环境变量一致;确认请求头包含 Authorization: Bearer <密码>;如曾经登陆错误,清除 esa_nav_token 后重试。

代码上传到github上了,自取
foxhound1227/esa_web

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

5

主题

25

回帖

0

牛值

fnOS系统内测组

阿里esa限速吗?

目前来看 可以跑满我的上行带宽  详情 回复
前天 18:07

10

主题

59

回帖

0

牛值

初出茅庐

前天 18:07 楼主 显示全部楼层

目前来看 可以跑满我的上行带宽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则