Spring Cloud Gateway 网关 Redis 代理 GitLab 项目 Releases
说明
Spring Cloud Gateway 使用 Redis 配置路由,其他配置方式同理
- 由于
GitLab 的项目是非公开的,所以 GitLab 项目的 发布 Releases 访问时必须需要凭证,但是又需要匿名用户可以访问
GitLab Releases 等接口,下载、自动更新程序,具体见:Android 项目 GitLab Runner release-cli 发布、自动更新
配置
- 配置代理时,一定要匹配到项目的具体功能路径
- 配置代理时,一定要匹配到项目的具体功能路径
- 配置代理时,一定要匹配到项目的具体功能路径
允许匿名访问 GitLab Releases 发布接口
id:唯一即可
predicates[0].name:Host:基于域名匹配
predicates[0].args.args1:域名配置
predicates[1].name:Path:基于路径匹配
predicates[1].args.args1:路径配置。项目发布接口地址。此处的 551 代表项目ID
filters[0].name:AddRequestHeader:添加请求头 过滤器
filters[0].args.name:请求头名称,GitLab 凭证应该填写 PRIVATE-TOKEN
filters[0].args.value:请求头值,填写 GitLab API Token,必须只使用 read_api 权限,否则会有数据泄漏风险
filters[1].name:AddRequestParameter:添加请求参数 过滤器
filters[1].args.name:per_page:GitLab 分页参数名,
filters[1].args.value:GitLab 分页参数每页条数
uri:目标服务器地址,不要配置具体路径(因为配置了也无效)
metadata:元数据
order:优先级
{
"id": "apk.xuxiaowei.com.cn-releases",
"predicates": [
{
"name": "Host",
"args": {
"args1": "apk.xuxiaowei.com.cn:*"
}
},
{
"name": "Path",
"args": {
"args1": "/api/v4/projects/551/releases"
}
}
],
"filters": [
{
"name": "AddRequestHeader",
"args": {
"name": "PRIVATE-TOKEN",
"value": "填写 GitLab API Token,必须只使用 read_api 权限,否则会有数据泄漏风险"
}
},
{
"name": "AddRequestParameter",
"args": {
"name": "per_page",
"value": "1"
}
}
],
"uri": "https://gitlab.xuxiaowei.com.cn",
"metadata": {},
"order": 0
}
允许匿名访问 GitLab Package 通用软件包仓库接口
id:唯一即可
predicates[0].name:Host:基于域名匹配
predicates[0].args.args1:域名配置
predicates[1].name:Path:基于路径匹配
predicates[1].args.args1:路径配置。项目通用软件包仓库地址。此处的 551 代表项目ID
filters[0].name:AddRequestHeader:添加请求头 过滤器
filters[0].args.name:请求头名称,GitLab 凭证应该填写 PRIVATE-TOKEN
filters[0].args.value:请求头值,填写 GitLab API Token,必须只使用 read_api 权限,否则会有数据泄漏风险
uri:目标服务器地址,不要配置具体路径(因为配置了也无效)
metadata:元数据
order:优先级
{
"id": "apk.xuxiaowei.com.cn-packages-generic",
"predicates": [
{
"name": "Host",
"args": {
"args1": "apk.xuxiaowei.com.cn:*"
}
},
{
"name": "Path",
"args": {
"args1": "/api/v4/projects/551/packages/generic/**"
}
}
],
"filters": [
{
"args": {
"name": "PRIVATE-TOKEN",
"value": "填写 GitLab API Token,必须只使用 read_api 权限,否则会有数据泄漏风险"
},
"name": "AddRequestHeader"
}
],
"uri": "https://gitlab.xuxiaowei.com.cn",
"metadata": {},
"order": 0
}
GitLab Releases 发布接口返回值替换
- 由于 GitLab Releases 发布接口返回的地址 URL 还是 GitLab 域名,而 GitLab 域名需要凭证才能访问,所以要对数据进行一点处理
- 处理方案如下:
- 在 APP 内进行硬编码,获取到 GitLab Releases 接口返回值后,替换为可以下载的地址
- 直接修改 代理 GitLab Releases 接口的返回值,如:登录 · 极狐GitLab
GitLab 最新版固定下载链接
- 第一步:调用 GitLab GitLab Releases 发布接口,获取最新的发布
- 第二步:找到 发布下载链接
- 第三步:返回 一个可以匿名下载的链接
- 参考:登录 · 极狐GitLab