轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像
交易
充值流量¥7起我的订单
文档
工具
提交工单页面收录
approuter

sapse/approuter

sapse

sapse/approuter 是一款为微服务架构业务应用提供单一入口的应用路由器,主要负责请求分发至后端微服务、用户认证及静态内容服务,适用于 Cloud Foundry 和 XS OnPremise Runtime 环境。

7 次收藏下载次数: 0状态:社区镜像维护者:sapse仓库类型:镜像最近更新:4 天前
让 AI 帮你使用轩辕镜像? · 展开查看说明 · 点击收起说明

如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这句话即可:

请先完整阅读并严格遵守以下文档中的全部规则与要求:

https://xuanyuan.cloud/agents.md

在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

中文简介
下载命令
镜像标签列表与下载命令
轩辕镜像,加速的不只是镜像。
点击查看

sapse/approuter

概述

当业务应用由多个不同应用(微服务)组成时,应用路由器用于为该业务应用提供单一入口点。其主要职责包括:

  • 分发请求至后端微服务(反向代理)
  • 对用户进行身份验证
  • 提供静态内容服务

!应用路由器概述图

可将不同应用(微服务)视为请求将被转发到的“目标”(destinations)。决定哪些请求应转发到哪个目标的规则称为“路由”(routes)。每个目标可对应多个路由。有关路由的更多概念将在本文档后续部分介绍。如果后端微服务需要身份验证,应用路由器可配置为对用户进行身份验证并传播用户信息。同样通过路由,应用路由器可以提供静态内容服务。

应用路由器设计用于 XS Advanced - Cloud Foundry 和 XS OnPremise Runtime 环境。

仅当没有可用 JWT 令牌时(例如,用户通过 Web 浏览器调用应用),调用组件才通过应用路由器访问目标服务。如果已存在 JWT 令牌(例如,用户已通过身份验证,或调用组件使用 JWT 令牌作为其自身 OAuth 客户端),调用组件将直接调用目标服务,无需使用应用路由器。

注意:应用路由器不会以任何方式隐藏后端微服务。它们仍然可以绕过应用路由器直接访问。因此,后端微服务必须通过验证 JWT 令牌并实施适当的范围检查来保护其所有端点。平台目前不提供网络隔离。

使用微服务部署业务应用

例如,我们有一个具有以下结构的业务应用:

+-- manifest.yml
+-- manifest-op.yml
|  +-- microservice-1
|  | +-- ...
|  | +-- ...
|  +-- microservice-2
|  | +-- ...
|  | +-- ...
|  +-- web
|  | +-- ...
|  | +-- ...

manifest.yml 文件用于在 Cloud Foundry 上部署业务应用,manifest-op.yml 用于在 XS OnPremise Runtime 上部署。这些文件应描述该业务应用的所有微服务。

文件夹用于隔离不同的微服务。假设应用路由器是 web 文件夹中的微服务(每个业务应用都有自己的应用路由器)。以下是包含应用路由器的方法:

  • 在 web 文件夹中手动创建 node_modules 文件夹。
  • 将包含独立应用路由器的文件夹复制到 node_modules 中。在此示例中,该文件夹名称为 @sap/approuter,参见下面 package.json 中的 start 脚本。
  • 检查刚复制的应用路由器版本。
  • 在 web 中创建 package.json 文件,内容类似以下示例,并将版本值替换为应用路由器的实际版本:
json
{
    "name": "hello-world-approuter",
    "dependencies": {
       "@sap/approuter": "2.6.1"
    },
    "scripts": {
        "start": "node node_modules/@sap/approuter/approuter.js"
    }
}

使用应用路由器无需编写任何 JavaScript 代码。只需在 web 文件夹中提供一些配置。以下是完整示例:

+-- web
| +-- package.json
| +-- xs-app.json
| +-- resources
| | +-- hello-world.html
| | +-- my-page.html
| +-- node_modules
| |   +-- ...
| +-- default-env.json
| +-- default-services.json

web 文件夹包含 package.json、node_modules、应用路由器使用的一些配置文件以及要提供的静态资源。有关配置的更多信息将在本文档后续部分介绍。

默认情况下,应用路由器在端口 5000 上运行(如果本地启动),或从 PORT 环境变量获取端口。

工作目录

工作目录包含应用路由器所需的配置文件和可在运行时提供的静态资源。在前面的示例中,web 文件夹是工作目录。默认情况下,当前目录为工作目录。可在应用路由器启动期间使用以下命令行参数配置工作目录:

bash
node approuter.js -w <working-dir>

如果工作目录不包含 xs-app.json 文件,应用路由器将终止。

配置

应用路由器使用以下配置:

  • 主配置 - 即 xs-app.json 文件。此文件是必需的,包含应用路由器的主要配置。

  • UAA 配置 - 应用路由器从 VCAP_SERVICES 环境变量(部署在 Cloud Foundry 或 XS Advanced OnPremise Runtime 时)或 default-services.json 文件(本地运行时)读取此配置。有关更多详细信息,请参阅 @sap/xsenv 包的文档。

  • 环境配置 - 这些配置从应用路由器的环境(部署在 Cloud Foundry 或 XS Advanced OnPremise Runtime 时)或 default-env.json 文件(本地运行时)读取。有关更多详细信息,请参阅 @sap/xsenv 包的文档。应用路由器考虑的环境变量如下:

配置环境变量描述
UAA 服务名称UAA_SERVICE_NAME包含要使用的 UAA 服务名称。
目标destinations提供有关可用目标的信息。
附加标头httpHeaders提供应用路由器将在其响应中返回给客户端的标头。
附加 CookieCOOKIES提供应用路由器将在其响应中返回给客户端的 Cookie。目前仅支持 SameSite Cookie。
插件plugins插件类似于路由,但无法配置某些内部属性。
会话超时SESSION_TIMEOUT表示会话超时(以分钟为单位)的正整数。默认超时为 15 分钟。
X-Frame-OptionsSEND_XFRAMEOPTIONS、httpHeadersX-Frame-Options 标头值的配置。
允许列表服务CJ_PROTECT_WHITELIST用于防止点击劫持***的允许列表配置。
WebSockets 源允许列表WS_ALLOWED_ORIGINS用于在建立 WebSocket 连接时验证初始升级请求的 Origin 标头的允许列表配置。
JWT 令牌刷新JWT_REFRESHJWT 令牌过期前应用路由器应触发令牌刷新例程的时间(以分钟为单位)。
传入连接超时INCOMING_CONNECTION_TIMEOUT客户端连接的最长时间(以毫秒为单位)。超过该时间后连接将关闭。如果设置为 0,则禁用超时。默认值:***(2 分钟)
租户主机模式TENANT_HOST_PATTERN包含带捕获组的正则表达式的字符串。请求主机与此正则表达式匹配。第一个捕获组的值用作租户 ID。
目标主机模式DESTINATION_HOST_PATTERN包含带捕获组的正则表达式的字符串。请求主机与此正则表达式匹配。捕获组的值用作目标名称。
压缩COMPRESSION有关在响应客户端之前压缩资源的配置。
会话 Cookie 的 Secure 标志SECURE_SESSION_COOKIE可设置为 true 或 false。默认情况下,会话 Cookie 的 Secure 标志根据应用路由器运行的环境设置。例如,当应用路由器位于配置为提供 HTTPS 流量的路由器(Cloud Foundry 的路由器或 SAP Web Dispatcher)后面时,将存在此标志。本地开发期间不设置该标志。此环境变量可用于强制设置或省略 Secure 标志。注意:如果强制设置 Secure 标志,应用路由器将拒绝通过未加密连接(http)发送的请求。
受信任的 CA 证书XS_CACERT_PATH用于出站 https 连接(UAA、目标等)的受信任 CA 证书的文件路径列表。文件路径由 https://nodejs.org/api/path.html#path_path_delimiter 分隔。如果省略此选项,将使用几个众所周知的“根”CA(如 VeriSign)。XSA On-premise 运行时会自动设置此变量。
拒绝不受信任的证书NODE_TLS_REJECT_UNAUTHORIZED默认情况下,如果远程端未提供受信任的证书,出站 https 连接将终止。可通过将 NODE_TLS_REJECT_UNAUTHORIZED 设置为 0 来禁用此检查。这是 Node.js 的内置功能。注意:不要在生产环境中使用此功能,因为它会损害安全性!
外部反向代理标志EXTERNAL_REVERSE_PROXY指示在外部反向代理(Cloud Foundry 域之外)后面使用应用路由器的布尔值
启动时跳过客户端凭据令牌加载SKIP_CLIENT_CREDENTIALS_TOKENS_LOAD指示在应用路由器启动阶段不应创建客户端凭据令牌的布尔值
跨域资源共享CORS有关启用 CORS 的配置。
保留 URL 片段PRESERVE_FRAGMENT当设置为 true 或未设置时,未登录用户对受保护路由的第一个请求所提供的 URL 的片段部分将被保留,登录流程后用户将重定向到包含片段部分的原始 URL。但是,这可能会破坏对 Approuter 的编程访问(例如端到端测试),因为它引入了与 Approuter 4.0.1 及更早版本不兼容的登录流程更改。将值设置为 false 使登录流程向后兼容,但不会考虑 URL 的片段部分。
直接路由 URI 模式DIRECT_ROUTING_URI_PATTERNS直接路由 URI 模式的配置。
NodeJS 最低日志级别CF_NODEJS_LOGGING_LEVELNodeJS 最低日志级别的配置。
动态身份提供商DYNAMIC_IDENTITY_PROVIDER动态身份提供商的配置。
后端 Cookie 密钥BACKEND_COOKIES_SECRET用于在服务到应用路由器流中加密后端会话 Cookie 的密钥。在使用多个应用路由器实例时应设置。默认情况下使用随机字符序列。
服务到应用路由器SERVICE_2_APPROUTER如果为 true,当从应用路由器接收到 SAP Passport 标头时,它将不加修改地传输到后端应用。
客户端证书标头名称CLIENT_CERTIFICATE_HEADER_NAME设置后,应用路由器将使用此标头名称从订阅回调的请求标头中获取客户端证书。如果未提供,默认标头名称为 x-forwarded-client-cert。
服务器保持连接SERVER_KEEP_ALIVE服务器保持连接超时(以毫秒为单位的正整数)。
最小令牌有效期MINIMUM_TOKEN_VALIDITY以秒为单位的正整数。设置后,approuter 将检查授权服务返回的令牌的过期时间是否高于最小令牌有效期值。

注意:所有这些环境变量都是可选的。

目标

目标配置可由 destinations 环境变量或目标服务提供。业务应用的每个应用(微服务)都必须有一个目标。

环境目标

目标配置是对象数组。目标可具有以下属性:

属性类型可选描述
nameString否目标的唯一字母数字标识符。
urlString否应用(微服务)的 URL。
proxyHostString是代理服务器的主机,用于请求应通过代理到达目标的情况。
proxyPortString是代理服务器的端口,用于请求应通过代理到达目标的情况。
forwardAuthTokenBoolean是如果为 true,则将 OAuth 令牌发送到目标。默认值为 false。此令牌包含用户身份、范围和其他属性。它由 UAA 或 IAS 服务签名,因此可用于后端服务的用户身份验证和授权。
strictSSLBoolean是配置应用路由器是否应拒绝不受信任的证书。默认值为 true。
注意:不要在生产环境中使用此功能,因为它会损害安全性!
timeoutNumber是表示等待目标响应的最长时间(以毫秒为单位)的正整数。默认值为 30000ms。
setXForwardedHeadersBoolean是如果为 true,应用路由器会将 X-Forwarded-(Host, Path, Proto) 标头添加到后端请求。默认值为 true。
proxyTypeString是配置目标用于访问内部网络还是公共 Internet 上的应用。可能的值:OnPremise。如果未提供该属性,则假定为公共 Internet 访问。
注意:如果设置了 OnPremise 值,则需要绑定到 SAP Cloud Platform 连接服务,并且不应设置 forwardAuthToken 属性。

注意:指定的超时也将应用于目标的注销路径或服务的注销路径(如果已设置)。
注意:proxyHost 和 proxyPort 是可选的,但如果定义了其中一个,则另一个变为必需的。

目标环境变量的示例内容:

json
[
  {
    "name" : "ui5",
    "url" : "https://ui5.sap.com",
    "proxyHost" : "proxy",
    "proxyPort" : "8080",
    "forwardAuthToken" : false,
    "timeout" : 1200
  }
]

也可将目标包含在 manifest.yml 和 manifest-op.yml 文件中:

yml
- name: node-hello-world
  memory: 100M
  path: web
  env:
    destinations: >
                  [
                    {"name":"ui5", "url":"https://ui5.sap.com"}
                  ]

目标服务

目标配置也可从 目标服务 读取。
以下是应用路由器对从目标服务获取的目标属性配置的限制:

属性附加属性描述
类型仅支持 HTTP。
身份验证支持所有身份验证类型。
注意:如果身份验证类型为 基本身份验证,则 用户 和 密码 是必需的。
注意:如果身份验证类型设置为 主体传播,则 ProxyType 必须为 on-premise。
注意:如果身份验证类型设置为 OAuth2SAMLBearerAssertion,则 xs-security.json 中需要 uaa.user 范围。
ProxyType支持的代理类型:on-premise、internet、private-link。
注意:如果 ProxyType 设置为 on-premise,则需要绑定到 SAP Cloud Platform 连接服务。
注意:private-link 代理类型是测试功能,不适合生产使用。仅在 Azure 环境中可用。

可选附加属性:

属性附加属性描述
HTML5.ForwardAuthToken是如果为 true,则将 OAuth 令牌发送到目标。默认值为 false。此令牌包含用户身份、范围和其他属性。它由 UAA 签名,因此可用于后端服务的用户身份验证和授权。
注意:如果 ProxyType 设置为 on-premise,则不应设置 ForwardAuthToken 属性。
注意:如果身份验证类型不是 NoAuthentication,则不应设置 ForwardAuthToken 属性。
HTML5.Timeout是表示等待目标响应的最长时间(以毫秒为单位)的正整数。默认值为 30000ms。注意:指定的超时也将应用于目标的注销路径或服务的注销路径(如果已设置)。
HTML5.PreserveHostHeader是如果为 true,应用路由器会保留后端请求中的主机标头。
某些后端系统(如 AS ABAP)需要此标头,它们不处理 x-forwarded-* 标头。
HTML5.DynamicDestination是如果为 true,应用路由器允许在主机或路径级别动态使用此目标。
HTML5.SetX

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 approuter 镜像标签

docker pull docker.xuanyuan.run/sapse/approuter:<标签>

使用方法:

  • 登录认证方式
  • 免认证方式

DockerHub 原生拉取命令

docker pull sapse/approuter:<标签>

轩辕镜像配置手册

按平台快速找到配置文档

一键安装

一键安装 Docker

Linux Docker 一键安装

AI

用 AI 使用轩辕镜像

agents.md · AI 对话 · 提示词

Docker

登录仓库拉取

登录认证 · 私有仓库

专属域名拉取

免登录 · 高速拉取

Linux

Docker 镜像配置

Windows / Mac

Docker Desktop 配置

MacOS OrbStack

OrbStack 容器

Apple Container

macOS 原生容器

Docker Compose

Compose 项目配置

NAS

群晖

Synology 配置

飞牛

fnOS 镜像配置

绿联

绿联 NAS

威联通

QNAP 配置

极空间

极空间 NAS

Unraid

Unraid NAS

企业仓库

其他仓库

ghcr · Quay · nvcr

Harbor 镜像源

Proxy Repository 对接

Portainer 镜像源

Registries 配置

Nexus 镜像源

Docker Proxy 缓存

开发工具

Dev Containers

VS Code 开发容器

Podman

Podman 配置指南

Singularity / Apptainer

HPC 科学计算容器

Kubernetes

K8s Containerd

Kubernetes · Containerd

K3s

轻量级集群

面板 / 网络

爱快路由

iKuai 镜像加速

宝塔面板

一键配置镜像源

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

功能

版本功能对比

功能对比 · 版本选择

支持的镜像仓库

Docker Hub · GCR · GHCR

新手拉取配置

登录 · 专属域名 · 配置

docker search 限制

专属域名 · Hub 搜索

不支持 push

仅支持 pull · 不支持

拉取速度原因

带宽 · 缓存 · 冷热镜像

错误码

402 与流量用尽

402 · 流量包 · 充值

401 认证失败

401 · docker login

manifest unknown

标签错误 · 镜像不存在

410 Gone 排查

410 · Docker 升级

429 限流

免费版 · 专业版 · 企业版 · 请求频率

其他报错

DNS 超时

DNS 解析 · 网络超时

TLS 证书失败

no matching manifest(架构)

账号

失败是否计费

manifest · blob · 计费

申请开发票(企业 / 个人)

企业 · 个人 · 工单

修改登录密码

网站 · 仓库 · 重置

注销账户

工单 · 数据 · 注销

原理

mirrors 不生效

daemon.json · 重启

去掉域名前缀

docker tag · 重命名

指定架构拉取

ARM64 · AMD64 · 多架构

latest 与「最新」

digest · 版本号 · 标签

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
sapse/approuter
教程轩辕镜像功能与使用教程
定价查看流量套餐与价格
热门查看热门 Docker 镜像推荐
博客Docker 镜像公告与技术博客
专业版 · 高速稳定拉取镜像
高速镜像下载·在线技术支持·99.95% SLA 保障·付费会员免广告
50GB 仅 ¥7/年
专业版 · 高速稳定拉取镜像
50GB 仅 ¥7/年
高速镜像下载·在线技术支持·99.95% SLA 保障·付费会员免广告
用户协议·隐私政策·增值电信业务经营许可证:浙B2-20261007·©2024-2026 源码跳动©2024-2026 杭州源码跳动科技有限公司·商务合作:点击复制邮箱

更多 approuter 镜像推荐

sapse/sap-transp-proxy-operator logo

sapse/sap-transp-proxy-operator

sapse
暂无描述
1万+ 次下载
27 天前更新
sapse/transparent-tcp-proxy logo

sapse/transparent-tcp-proxy

sapse
暂无描述
1万+ 次下载
27 天前更新
sapse/transparent-http-proxy logo

sapse/transparent-http-proxy

sapse
暂无描述
1万+ 次下载
27 天前更新
sapse/transparent-proxy logo

sapse/transparent-proxy

sapse
暂无描述
1 次收藏908 次下载
27 天前更新

查看更多 approuter 相关镜像