专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像 官方专业版轩辕镜像 官方专业版官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

sapse/approuter Docker 镜像 - 轩辕镜像 | Docker 镜像高效稳定拉取服务

热门搜索:openclaw🔥nginx🔥redis🔥mysqlopenjdkcursorweb2apimemgraphzabbixetcdubuntucorednsjdk
approuter
sapse/approuter
sapse
sapse/approuter 是一款为微服务架构业务应用提供单一入口的应用路由器,主要负责请求分发至后端微服务、用户认证及静态内容服务,适用于 Cloud Foundry 和 XS OnPremise Runtime 环境。
7 次收藏下载次数: 0状态:社区镜像维护者:sapse仓库类型:镜像最近更新:19 天前
轩辕镜像,加速的不只是镜像。点击查看
中文简介版本下载
轩辕镜像,加速的不只是镜像。点击查看

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 证书的文件路径列表。文件路径由 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" : "[***]",
    "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":"[***]"}
                  ]
目标服务

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

属性附加属性描述
类型仅支持 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 相关镜像 →
sapse/transparent-tcp-proxy logo
sapse/transparent-tcp-proxy
sapse
暂无描述
1万+ 次下载
2 个月前更新

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

Harbor 镜像源配置

Harbor Proxy Repository 对接专属域名

Portainer 镜像源配置

Portainer Registries 加速拉取

Nexus 镜像源配置

Nexus3 Docker Proxy 内网缓存

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

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

镜像拉取常见问题

使用与功能问题

配置了专属域名后,docker search 为什么会报错?

docker search 限制

Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?

站内搜不到镜像

机器不能直连外网时,怎么用 docker save / load 迁镜像?

离线 save/load

docker pull 拉插件报错(plugin v1+json)怎么办?

插件要用 plugin install

WSL 里 Docker 拉镜像特别慢,怎么排查和优化?

WSL 拉取慢

轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?

安全与 digest

第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?

新手拉取配置

错误码与失败问题

docker pull 提示 manifest unknown 怎么办?

manifest unknown

docker pull 提示 no matching manifest 怎么办?

no matching manifest(架构)

Docker pull 时 HTTPS / TLS 证书验证失败怎么办?

TLS 证书失败

Docker pull 时 DNS 解析超时或连不上仓库怎么办?

DNS 超时

Docker 拉取出现 410 Gone 怎么办?

410 Gone 排查

出现 402 或「流量用尽」提示怎么办?

402 与流量用尽

Docker 拉取提示 UNAUTHORIZED(401)怎么办?

401 认证失败

遇到 429 Too Many Requests(请求太频繁)怎么办?

429 限流

docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?

D-Bus 凭证提示

为什么会出现「单层超过 20GB」或 413,无法加速拉取?

413 与超大单层

账号 / 计费 / 权限

轩辕镜像免费版和专业版有什么区别?

免费版与专业版区别

轩辕镜像支持哪些 Docker 镜像仓库?

支持的镜像仓库

镜像拉取失败还会不会扣流量?

失败是否计费

麒麟 V10 / 统信 UOS 提示 KYSEC 权限不够怎么办?

KYSEC 拦截脚本

如何在轩辕镜像申请开具发票?

申请开票

怎么修改轩辕镜像的网站登录和仓库登录密码?

修改登录密码

如何注销轩辕镜像账户?要注意什么?

注销账户

配置与原理类

写了 registry-mirrors,为什么还是走官方或仍然报错?

mirrors 不生效

怎么用 docker tag 去掉镜像名里的轩辕域名前缀?

去掉域名前缀

如何拉取指定 CPU 架构的镜像(如 ARM64、AMD64)?

指定架构拉取

用轩辕镜像拉镜像时快时慢,常见原因有哪些?

拉取速度原因

查看全部问题→

用户好评

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

用户头像

oldzhang

运维工程师

Linux服务器

5

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

轩辕镜像
镜像详情
...
sapse/approuter
博客公告Docker 镜像公告与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单,官方技术交流群:1072982923。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单,官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.