mirror of
https://github.com/nocobase/nocobase.git
synced 2026-09-01 14:57:36 +08:00
docs(docs): sync translated env and cluster docs (#9115)
This commit is contained in:
@@ -67,12 +67,14 @@ NocoBase 在集群部署时可以将不同服务拆分部署到不同的节点
|
||||
开发业务插件时,可根据需求场景,针对较大资源消耗的服务进行拆分。可以通过以下方式实现:
|
||||
|
||||
1. 定义一个新的服务标识,例如 `my-plugin:process`,用于环境变量配置,并提供文档说明。
|
||||
2. 在插件服务端的业务功能中,使用 `app.serving()` 的接口对环境进行判断,来决定是否由环境变量控制当前节点提供某个业务。
|
||||
2. 在插件服务端的业务功能中,使用 `serving()` 的接口对环境进行判断,来决定是否由环境变量控制当前节点提供某个业务。
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// 在插件的服务端代码中
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// 处理该服务的业务逻辑
|
||||
} else {
|
||||
// 不处理该服务的业务逻辑
|
||||
|
||||
@@ -365,6 +365,27 @@ TELEMETRY_TRACE_PROCESSOR=console
|
||||
|
||||
用于配置集群模式下进行服务拆分时,不同节点的工作模式,详情查看「[服务拆分:如何拆分服务](/cluster-mode/services-splitting#如何拆分服务)」。
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
服务端对外发送 HTTP 请求的目标白名单,用于防止 SSRF(服务端请求伪造)攻击。逗号分隔,支持精确 IP、CIDR 范围、精确域名和通配符子域名(单级)。
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**适用范围**:工作流「HTTP 请求」节点、自定义操作按钮的「自定义请求」。相对路径(调用 NocoBase 自身 API)不受此限制影响。
|
||||
|
||||
**未配置时**:所有 `http`/`https` 请求均放行(保持原有行为)。**配置后**:仅允许匹配白名单的请求,不匹配的请求会报错。
|
||||
|
||||
支持的格式:
|
||||
|
||||
| 格式 | 示例 | 匹配规则 |
|
||||
| --- | --- | --- |
|
||||
| 精确 IPv4 | `1.2.3.4` | 仅匹配该 IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | 匹配该网段内所有 IP |
|
||||
| 精确域名 | `api.example.com` | 仅匹配该域名 |
|
||||
| 通配符子域名 | `*.example.com` | 匹配一级子域名,如 `foo.example.com`,不匹配 `example.com` 或 `a.b.example.com` |
|
||||
|
||||
## 实验性环境变量
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -476,24 +497,3 @@ yarn cross-env \
|
||||
### WORKFLOW_LOOP_LIMIT
|
||||
|
||||
工作流循环节点的最大循环次数限制,详情查看「[循环节点](/workflow/nodes/loop#WORKFLOW_LOOP_LIMIT)」。
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
服务端对外发送 HTTP 请求的目标白名单,用于防止 SSRF(服务端请求伪造)攻击。逗号分隔,支持精确 IP、CIDR 范围、精确域名和通配符子域名(单级)。
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**适用范围**:工作流「HTTP 请求」节点、自定义操作按钮的「自定义请求」。相对路径(调用 NocoBase 自身 API)不受此限制影响。
|
||||
|
||||
**未配置时**:所有 `http`/`https` 请求均放行(保持原有行为)。**配置后**:仅允许匹配白名单的请求,不匹配的请求会报错。
|
||||
|
||||
支持的格式:
|
||||
|
||||
| 格式 | 示例 | 匹配规则 |
|
||||
| --- | --- | --- |
|
||||
| 精确 IPv4 | `1.2.3.4` | 仅匹配该 IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | 匹配该网段内所有 IP |
|
||||
| 精确域名 | `api.example.com` | 仅匹配该域名 |
|
||||
| 通配符子域名 | `*.example.com` | 匹配一级子域名,如 `foo.example.com`,不匹配 `example.com` 或 `a.b.example.com` |
|
||||
|
||||
@@ -65,14 +65,16 @@ Angenommen, es gibt vier Knoten, nämlich `node1`, `node2`, `node3` und `node4`.
|
||||
Beim Entwickeln von Geschäfts-Plugins können Sie ressourcenintensive Dienste je nach Anforderungsszenario aufteilen. Dies kann auf folgende Weisen erreicht werden:
|
||||
|
||||
1. Definieren Sie einen neuen Dienst-Identifikator, zum Beispiel `my-plugin:process`, für die Umgebungsvariablenkonfiguration und stellen Sie eine Dokumentation dazu bereit.
|
||||
2. In der Geschäftslogik des serverseitigen Plugins verwenden Sie die `app.serving()`-Schnittstelle, um die Umgebung zu prüfen und zu entscheiden, ob der aktuelle Knoten einen bestimmten Dienst basierend auf der Umgebungsvariable bereitstellen soll.
|
||||
2. In der Geschäftslogik des serverseitigen Plugins verwenden Sie die `serving()`-Schnittstelle, um die Umgebung zu prüfen und zu entscheiden, ob der aktuelle Knoten einen bestimmten Dienst basierend auf der Umgebungsvariable bereitstellen soll.
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// Im serverseitigen Code des Plugins
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// Verarbeiten Sie die Geschäftslogik für diesen Dienst
|
||||
} else {
|
||||
// Verarbeiten Sie die Geschäftslogik für diesen Dienst nicht
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -358,6 +358,27 @@ Die aktivierten Trace-Datenprozessoren. Der Standardwert ist `console`. Andere W
|
||||
TELEMETRY_TRACE_PROCESSOR=console
|
||||
```
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Whitelist der erlaubten Ziele für serverseitige ausgehende HTTP-Anfragen, um SSRF-Angriffe (Server-Side Request Forgery) zu verhindern. Kommagetrennte Liste aus exakten IPs, CIDR-Bereichen, exakten Hostnamen und einstufigen Platzhalter-Subdomains.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Gilt für**: Workflow-Knoten „HTTP-Anfrage" und benutzerdefinierte Anfrage-Aktionsschaltflächen. Relative Pfade (Aufrufe der NocoBase-API selbst) sind nicht betroffen.
|
||||
|
||||
**Nicht konfiguriert**: Alle `http`/`https`-Anfragen sind erlaubt (bisheriges Verhalten). **Konfiguriert**: Nur Anfragen, deren Host einem Whitelist-Eintrag entspricht, sind erlaubt; nicht übereinstimmende Anfragen führen zu einem Fehler.
|
||||
|
||||
Unterstützte Formate:
|
||||
|
||||
| Format | Beispiel | Trifft zu auf |
|
||||
| --- | --- | --- |
|
||||
| Exakte IPv4 | `1.2.3.4` | Nur diese IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Alle IPs im Subnetz |
|
||||
| Exakter Hostname | `api.example.com` | Nur dieser Hostname |
|
||||
| Platzhalter-Subdomain | `*.example.com` | Eine Subdomain-Ebene, z. B. `foo.example.com`; **nicht** `example.com` oder `a.b.example.com` |
|
||||
|
||||
## Experimentelle Umgebungsvariablen
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -457,25 +478,3 @@ yarn cross-env \
|
||||
INIT_ROOT_NICKNAME="Super Admin" \
|
||||
nocobase install
|
||||
```
|
||||
## Umgebungsvariablen anderer Plugins
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Whitelist der erlaubten Ziele für serverseitige ausgehende HTTP-Anfragen, um SSRF-Angriffe (Server-Side Request Forgery) zu verhindern. Kommagetrennte Liste aus exakten IPs, CIDR-Bereichen, exakten Hostnamen und einstufigen Platzhalter-Subdomains.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Gilt für**: Workflow-Knoten „HTTP-Anfrage" und benutzerdefinierte Anfrage-Aktionsschaltflächen. Relative Pfade (Aufrufe der NocoBase-API selbst) sind nicht betroffen.
|
||||
|
||||
**Nicht konfiguriert**: Alle `http`/`https`-Anfragen sind erlaubt (bisheriges Verhalten). **Konfiguriert**: Nur Anfragen, deren Host einem Whitelist-Eintrag entspricht, sind erlaubt; nicht übereinstimmende Anfragen führen zu einem Fehler.
|
||||
|
||||
Unterstützte Formate:
|
||||
|
||||
| Format | Beispiel | Trifft zu auf |
|
||||
| --- | --- | --- |
|
||||
| Exakte IPv4 | `1.2.3.4` | Nur diese IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Alle IPs im Subnetz |
|
||||
| Exakter Hostname | `api.example.com` | Nur dieser Hostname |
|
||||
| Platzhalter-Subdomain | `*.example.com` | Eine Subdomain-Ebene, z. B. `foo.example.com`; **nicht** `example.com` oder `a.b.example.com` |
|
||||
|
||||
@@ -63,14 +63,16 @@ Suppose there are four nodes: `node1`, `node2`, `node3`, and `node4`. They can b
|
||||
When developing business plugins, you can split services that consume significant resources based on the requirements of the scenario. This can be achieved in the following ways:
|
||||
|
||||
1. Define a new service identifier, for example, `my-plugin:process`, for environment variable configuration, and provide documentation for it.
|
||||
2. In the business logic of the plugin's server-side, use the `app.serving()` interface to check the environment and determine whether the current node should provide a specific service based on the environment variable.
|
||||
2. In the business logic of the plugin's server-side, use the `serving()` interface to check the environment and determine whether the current node should provide a specific service based on the environment variable.
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// In the plugin's server-side code
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// Process the business logic for this service
|
||||
} else {
|
||||
// Do not process the business logic for this service
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -355,6 +355,27 @@ Enabled trace data processors. Default is `console`. Other values should refer t
|
||||
TELEMETRY_TRACE_PROCESSOR=console
|
||||
```
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Whitelist of allowed targets for server-initiated outbound HTTP requests, used to prevent SSRF (Server-Side Request Forgery) attacks. Accepts a comma-separated list of exact IPs, CIDR ranges, exact hostnames, and single-level wildcard subdomains.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Applies to**: Workflow "HTTP Request" nodes and Custom Request action buttons. Relative-path requests (calls to the NocoBase API itself) are not affected.
|
||||
|
||||
**When not set**: All `http`/`https` outbound requests are allowed (existing behaviour). **When set**: Only requests whose host matches a whitelist entry are permitted; non-matching requests will raise an error.
|
||||
|
||||
Supported formats:
|
||||
|
||||
| Format | Example | Matches |
|
||||
| --- | --- | --- |
|
||||
| Exact IPv4 | `1.2.3.4` | That IP only |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | All IPs in the subnet |
|
||||
| Exact hostname | `api.example.com` | That hostname only |
|
||||
| Wildcard subdomain | `*.example.com` | One subdomain level, e.g. `foo.example.com`; does **not** match `example.com` or `a.b.example.com` |
|
||||
|
||||
## Experimental Environment Variables
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -464,24 +485,3 @@ Workflow JavaScript node available modules list. For details, see "[JavaScript N
|
||||
### WORKFLOW_LOOP_LIMIT
|
||||
|
||||
Maximum loop count limit for workflow loop nodes. For details, see "[Loop Node](/workflow/nodes/loop#WORKFLOW_LOOP_LIMIT)".
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Whitelist of allowed targets for server-initiated outbound HTTP requests, used to prevent SSRF (Server-Side Request Forgery) attacks. Accepts a comma-separated list of exact IPs, CIDR ranges, exact hostnames, and single-level wildcard subdomains.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Applies to**: Workflow "HTTP Request" nodes and Custom Request action buttons. Relative-path requests (calls to the NocoBase API itself) are not affected.
|
||||
|
||||
**When not set**: All `http`/`https` outbound requests are allowed (existing behaviour). **When set**: Only requests whose host matches a whitelist entry are permitted; non-matching requests will raise an error.
|
||||
|
||||
Supported formats:
|
||||
|
||||
| Format | Example | Matches |
|
||||
| --- | --- | --- |
|
||||
| Exact IPv4 | `1.2.3.4` | That IP only |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | All IPs in the subnet |
|
||||
| Exact hostname | `api.example.com` | That hostname only |
|
||||
| Wildcard subdomain | `*.example.com` | One subdomain level, e.g. `foo.example.com`; does **not** match `example.com` or `a.b.example.com` |
|
||||
|
||||
@@ -65,14 +65,16 @@ Supongamos que hay cuatro nodos: `node1`, `node2`, `node3` y `node4`. Se pueden
|
||||
Al desarrollar *plugins* de negocio, puede dividir los servicios que consumen recursos significativos según los requisitos del escenario. Esto se puede lograr de las siguientes maneras:
|
||||
|
||||
1. Defina un nuevo identificador de servicio, por ejemplo, `my-plugin:process`, para la configuración de la variable de entorno y proporcione la documentación correspondiente.
|
||||
2. En la lógica de negocio del lado del servidor del *plugin*, utilice la interfaz `app.serving()` para verificar el entorno y determinar si el nodo actual debe proporcionar un servicio específico basándose en la variable de entorno.
|
||||
2. En la lógica de negocio del lado del servidor del *plugin*, utilice la interfaz `serving()` para verificar el entorno y determinar si el nodo actual debe proporcionar un servicio específico basándose en la variable de entorno.
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// En el código del lado del servidor del plugin
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// Procesar la lógica de negocio para este servicio
|
||||
} else {
|
||||
// No procesar la lógica de negocio para este servicio
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -359,6 +359,27 @@ Procesadores de datos de rastreo habilitados. El valor predeterminado es `consol
|
||||
TELEMETRY_TRACE_PROCESSOR=console
|
||||
```
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Lista blanca de destinos permitidos para solicitudes HTTP salientes iniciadas desde el servidor, utilizada para prevenir ataques SSRF (Server-Side Request Forgery). Acepta una lista separada por comas de IPs exactas, rangos CIDR, nombres de host exactos y subdominios con comodín de un solo nivel.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Aplica a**: Nodos de "Solicitud HTTP" en flujos de trabajo y botones de acción de solicitud personalizada. Las solicitudes con ruta relativa (llamadas a la propia API de NocoBase) no se ven afectadas.
|
||||
|
||||
**Sin configurar**: Se permiten todas las solicitudes `http`/`https` salientes (comportamiento existente). **Configurado**: Solo se permiten solicitudes cuyo host coincida con una entrada de la lista blanca; las solicitudes que no coincidan generarán un error.
|
||||
|
||||
Formatos admitidos:
|
||||
|
||||
| Formato | Ejemplo | Coincide con |
|
||||
| --- | --- | --- |
|
||||
| IPv4 exacta | `1.2.3.4` | Solo esa IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Todas las IPs de la subred |
|
||||
| Nombre de host exacto | `api.example.com` | Solo ese nombre de host |
|
||||
| Subdominio comodín | `*.example.com` | Un nivel de subdominio, p. ej. `foo.example.com`; **no** coincide con `example.com` ni `a.b.example.com` |
|
||||
|
||||
## Variables de Entorno Experimentales
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -460,25 +481,3 @@ yarn cross-env \
|
||||
INIT_ROOT_NICKNAME="Super Admin" \
|
||||
nocobase install
|
||||
```
|
||||
## Variables de entorno de otros plugins
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Lista blanca de destinos permitidos para solicitudes HTTP salientes iniciadas desde el servidor, utilizada para prevenir ataques SSRF (Server-Side Request Forgery). Acepta una lista separada por comas de IPs exactas, rangos CIDR, nombres de host exactos y subdominios con comodín de un solo nivel.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Aplica a**: Nodos de "Solicitud HTTP" en flujos de trabajo y botones de acción de solicitud personalizada. Las solicitudes con ruta relativa (llamadas a la propia API de NocoBase) no se ven afectadas.
|
||||
|
||||
**Sin configurar**: Se permiten todas las solicitudes `http`/`https` salientes (comportamiento existente). **Configurado**: Solo se permiten solicitudes cuyo host coincida con una entrada de la lista blanca; las solicitudes que no coincidan generarán un error.
|
||||
|
||||
Formatos admitidos:
|
||||
|
||||
| Formato | Ejemplo | Coincide con |
|
||||
| --- | --- | --- |
|
||||
| IPv4 exacta | `1.2.3.4` | Solo esa IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Todas las IPs de la subred |
|
||||
| Nombre de host exacto | `api.example.com` | Solo ese nombre de host |
|
||||
| Subdominio comodín | `*.example.com` | Un nivel de subdominio, p. ej. `foo.example.com`; **no** coincide con `example.com` ni `a.b.example.com` |
|
||||
|
||||
@@ -65,14 +65,16 @@ Supposons qu'il y ait quatre nœuds : `node1`, `node2`, `node3` et `node4`. Ils
|
||||
Lors du développement de plugins métier, vous pouvez séparer les services qui consomment des ressources importantes en fonction des exigences du scénario. Cela peut être réalisé de la manière suivante :
|
||||
|
||||
1. Définissez un nouvel identifiant de service, par exemple `my-plugin:process`, pour la configuration de la variable d'environnement, et fournissez une documentation à ce sujet.
|
||||
2. Dans la logique métier côté serveur du plugin, utilisez l'interface `app.serving()` pour vérifier l'environnement et déterminer si le nœud actuel doit fournir un service spécifique en fonction de la variable d'environnement.
|
||||
2. Dans la logique métier côté serveur du plugin, utilisez l'interface `serving()` pour vérifier l'environnement et déterminer si le nœud actuel doit fournir un service spécifique en fonction de la variable d'environnement.
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// Dans le code côté serveur du plugin
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// Traitez la logique métier de ce service
|
||||
} else {
|
||||
// Ne traitez pas la logique métier de ce service
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -359,6 +359,27 @@ Processeurs de données de trace activés. La valeur par défaut est `console`.
|
||||
TELEMETRY_TRACE_PROCESSOR=console
|
||||
```
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Liste blanche des cibles autorisées pour les requêtes HTTP sortantes initiées côté serveur, afin de prévenir les attaques SSRF (Server-Side Request Forgery). Accepte une liste séparée par des virgules d'IPs exactes, de plages CIDR, de noms d'hôtes exacts et de sous-domaines génériques à un seul niveau.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**S'applique à** : Les nœuds « Requête HTTP » dans les workflows et les boutons d'action de requête personnalisée. Les requêtes avec chemin relatif (appels à l'API NocoBase elle-même) ne sont pas affectées.
|
||||
|
||||
**Non configuré** : Toutes les requêtes `http`/`https` sortantes sont autorisées (comportement existant). **Configuré** : Seules les requêtes dont l'hôte correspond à une entrée de la liste blanche sont autorisées ; les requêtes non correspondantes génèrent une erreur.
|
||||
|
||||
Formats pris en charge :
|
||||
|
||||
| Format | Exemple | Correspond à |
|
||||
| --- | --- | --- |
|
||||
| IPv4 exacte | `1.2.3.4` | Uniquement cette IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Toutes les IPs du sous-réseau |
|
||||
| Nom d'hôte exact | `api.example.com` | Uniquement ce nom d'hôte |
|
||||
| Sous-domaine générique | `*.example.com` | Un niveau de sous-domaine, ex. `foo.example.com` ; **pas** `example.com` ni `a.b.example.com` |
|
||||
|
||||
## Variables d'environnement expérimentales
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -458,25 +479,3 @@ yarn cross-env \
|
||||
INIT_ROOT_NICKNAME="Super Admin" \
|
||||
nocobase install
|
||||
```
|
||||
## Variables d'environnement des autres plugins
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Liste blanche des cibles autorisées pour les requêtes HTTP sortantes initiées côté serveur, afin de prévenir les attaques SSRF (Server-Side Request Forgery). Accepte une liste séparée par des virgules d'IPs exactes, de plages CIDR, de noms d'hôtes exacts et de sous-domaines génériques à un seul niveau.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**S'applique à** : Les nœuds « Requête HTTP » dans les workflows et les boutons d'action de requête personnalisée. Les requêtes avec chemin relatif (appels à l'API NocoBase elle-même) ne sont pas affectées.
|
||||
|
||||
**Non configuré** : Toutes les requêtes `http`/`https` sortantes sont autorisées (comportement existant). **Configuré** : Seules les requêtes dont l'hôte correspond à une entrée de la liste blanche sont autorisées ; les requêtes non correspondantes génèrent une erreur.
|
||||
|
||||
Formats pris en charge :
|
||||
|
||||
| Format | Exemple | Correspond à |
|
||||
| --- | --- | --- |
|
||||
| IPv4 exacte | `1.2.3.4` | Uniquement cette IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Toutes les IPs du sous-réseau |
|
||||
| Nom d'hôte exact | `api.example.com` | Uniquement ce nom d'hôte |
|
||||
| Sous-domaine générique | `*.example.com` | Un niveau de sous-domaine, ex. `foo.example.com` ; **pas** `example.com` ni `a.b.example.com` |
|
||||
|
||||
@@ -65,14 +65,16 @@ NocoBaseをクラスターにデプロイする際、異なるサービスを分
|
||||
ビジネスプラグインを開発する際、要件に応じて、リソース消費の大きいサービスを分割することができます。これは以下の方法で実現できます。
|
||||
|
||||
1. 環境変数設定のために、例えば `my-plugin:process` のような新しいサービス識別子を定義し、そのドキュメントを提供します。
|
||||
2. プラグインのサーバーサイドのビジネスロジックで、`app.serving()` インターフェースを使用して環境を判断し、現在のノードが環境変数に基づいて特定のサービスを提供すべきかを決定します。
|
||||
2. プラグインのサーバーサイドのビジネスロジックで、`serving()` のインターフェースを使用して環境を判断し、現在のノードが環境変数に基づいて特定のサービスを提供すべきかを決定します。
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// プラグインのサーバーサイドコード内
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// このサービスのビジネスロジックを処理
|
||||
} else {
|
||||
// このサービスのビジネスロジックは処理しない
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -359,6 +359,27 @@ TELEMETRY_METRIC_READER=console,prometheus
|
||||
TELEMETRY_TRACE_PROCESSOR=console
|
||||
```
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
SSRF(サーバーサイドリクエストフォージェリ)攻撃を防ぐための、サーバーから送信される HTTP リクエストの許可先ホワイトリスト。カンマ区切りで、正確な IP アドレス・CIDR 範囲・正確なホスト名・単一レベルのワイルドカードサブドメインを指定できます。
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**適用範囲**:ワークフローの「HTTP リクエスト」ノードおよびカスタムリクエストアクションボタン。相対パスのリクエスト(NocoBase 自身の API 呼び出し)は対象外です。
|
||||
|
||||
**未設定時**:すべての `http`/`https` リクエストを許可(既存の動作)。**設定時**:ホワイトリストに一致するホストへのリクエストのみ許可し、一致しないリクエストはエラーになります。
|
||||
|
||||
サポートされる形式:
|
||||
|
||||
| 形式 | 例 | マッチ対象 |
|
||||
| --- | --- | --- |
|
||||
| 正確な IPv4 | `1.2.3.4` | その IP のみ |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | サブネット内のすべての IP |
|
||||
| 正確なホスト名 | `api.example.com` | そのホスト名のみ |
|
||||
| ワイルドカードサブドメイン | `*.example.com` | 1 レベルのサブドメイン(例:`foo.example.com`)。`example.com` や `a.b.example.com` は**不一致** |
|
||||
|
||||
## 実験的な環境変数
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -460,25 +481,3 @@ yarn cross-env \
|
||||
INIT_ROOT_NICKNAME="Super Admin" \
|
||||
nocobase install
|
||||
```
|
||||
## 他のプラグインが提供する環境変数
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
SSRF(サーバーサイドリクエストフォージェリ)攻撃を防ぐための、サーバーから送信される HTTP リクエストの許可先ホワイトリスト。カンマ区切りで、正確な IP アドレス・CIDR 範囲・正確なホスト名・単一レベルのワイルドカードサブドメインを指定できます。
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**適用範囲**:ワークフローの「HTTP リクエスト」ノードおよびカスタムリクエストアクションボタン。相対パスのリクエスト(NocoBase 自身の API 呼び出し)は対象外です。
|
||||
|
||||
**未設定時**:すべての `http`/`https` リクエストを許可(既存の動作)。**設定時**:ホワイトリストに一致するホストへのリクエストのみ許可し、一致しないリクエストはエラーになります。
|
||||
|
||||
サポートされる形式:
|
||||
|
||||
| 形式 | 例 | マッチ対象 |
|
||||
| --- | --- | --- |
|
||||
| 正確な IPv4 | `1.2.3.4` | その IP のみ |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | サブネット内のすべての IP |
|
||||
| 正確なホスト名 | `api.example.com` | そのホスト名のみ |
|
||||
| ワイルドカードサブドメイン | `*.example.com` | 1 レベルのサブドメイン(例:`foo.example.com`)。`example.com` や `a.b.example.com` は**不一致** |
|
||||
|
||||
@@ -65,14 +65,16 @@ NocoBase를 클러스터에 배포할 때, 여러 서비스를 분리하여 다
|
||||
비즈니스 플러그인 개발 시, 요구 사항 시나리오에 따라 리소스 소모가 큰 서비스를 분리할 수 있습니다. 이는 다음 방법으로 구현할 수 있습니다.
|
||||
|
||||
1. `my-plugin:process`와 같은 새로운 서비스 식별자를 정의하고, 환경 변수 설정에 사용하며 관련 문서를 제공합니다.
|
||||
2. 플러그인의 서버 측 비즈니스 로직에서 `app.serving()` 인터페이스를 사용하여 환경을 판단하고, 환경 변수에 따라 현재 노드가 특정 서비스를 제공할지 여부를 결정합니다.
|
||||
2. 플러그인의 서버 측 비즈니스 로직에서 `serving()` 인터페이스를 사용하여 환경을 판단하고, 환경 변수에 따라 현재 노드가 특정 서비스를 제공할지 여부를 결정합니다.
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// 플러그인의 서버 측 코드에서
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// 해당 서비스의 비즈니스 로직 처리
|
||||
} else {
|
||||
// 해당 서비스의 비즈니스 로직을 처리하지 않음
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -358,6 +358,27 @@ TELEMETRY_METRIC_READER=console,prometheus
|
||||
TELEMETRY_TRACE_PROCESSOR=console
|
||||
```
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
SSRF(서버 측 요청 위조) 공격을 방지하기 위한 서버 발신 HTTP 요청 허용 대상 화이트리스트입니다. 쉼표로 구분된 정확한 IP, CIDR 범위, 정확한 호스트명, 단일 레벨 와일드카드 서브도메인을 지정할 수 있습니다.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**적용 범위**: 워크플로우 "HTTP 요청" 노드 및 커스텀 요청 액션 버튼. 상대 경로 요청(NocoBase 자체 API 호출)은 영향을 받지 않습니다.
|
||||
|
||||
**미설정 시**: 모든 `http`/`https` 외부 요청이 허용됩니다(기존 동작). **설정 시**: 화이트리스트 항목과 일치하는 호스트로의 요청만 허용되며, 일치하지 않는 요청은 오류가 발생합니다.
|
||||
|
||||
지원 형식:
|
||||
|
||||
| 형식 | 예시 | 매칭 대상 |
|
||||
| --- | --- | --- |
|
||||
| 정확한 IPv4 | `1.2.3.4` | 해당 IP만 |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | 서브넷 내 모든 IP |
|
||||
| 정확한 호스트명 | `api.example.com` | 해당 호스트명만 |
|
||||
| 와일드카드 서브도메인 | `*.example.com` | 1단계 서브도메인(예: `foo.example.com`). `example.com` 또는 `a.b.example.com`은 **불일치** |
|
||||
|
||||
## 실험적 환경 변수
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -457,25 +478,3 @@ yarn cross-env \
|
||||
INIT_ROOT_NICKNAME="Super Admin" \
|
||||
nocobase install
|
||||
```
|
||||
## 다른 플러그인이 제공하는 환경 변수
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
SSRF(서버 측 요청 위조) 공격을 방지하기 위한 서버 발신 HTTP 요청 허용 대상 화이트리스트입니다. 쉼표로 구분된 정확한 IP, CIDR 범위, 정확한 호스트명, 단일 레벨 와일드카드 서브도메인을 지정할 수 있습니다.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**적용 범위**: 워크플로우 "HTTP 요청" 노드 및 커스텀 요청 액션 버튼. 상대 경로 요청(NocoBase 자체 API 호출)은 영향을 받지 않습니다.
|
||||
|
||||
**미설정 시**: 모든 `http`/`https` 외부 요청이 허용됩니다(기존 동작). **설정 시**: 화이트리스트 항목과 일치하는 호스트로의 요청만 허용되며, 일치하지 않는 요청은 오류가 발생합니다.
|
||||
|
||||
지원 형식:
|
||||
|
||||
| 형식 | 예시 | 매칭 대상 |
|
||||
| --- | --- | --- |
|
||||
| 정확한 IPv4 | `1.2.3.4` | 해당 IP만 |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | 서브넷 내 모든 IP |
|
||||
| 정확한 호스트명 | `api.example.com` | 해당 호스트명만 |
|
||||
| 와일드카드 서브도메인 | `*.example.com` | 1단계 서브도메인(예: `foo.example.com`). `example.com` 또는 `a.b.example.com`은 **불일치** |
|
||||
|
||||
@@ -65,14 +65,16 @@ Suponha que existam quatro nós: `node1`, `node2`, `node3` e `node4`. Eles podem
|
||||
Ao desenvolver plugins de negócio, você pode separar serviços que consomem muitos recursos, com base nos requisitos do cenário. Isso pode ser alcançado das seguintes maneiras:
|
||||
|
||||
1. Defina um novo identificador de serviço, por exemplo, `my-plugin:process`, para a configuração da variável de ambiente, e forneça a documentação correspondente.
|
||||
2. Na lógica de negócio do lado do servidor do plugin, utilize a interface `app.serving()` para verificar o ambiente e determinar se o nó atual deve fornecer um serviço específico com base na variável de ambiente.
|
||||
2. Na lógica de negócio do lado do servidor do plugin, utilize a interface `serving()` para verificar o ambiente e determinar se o nó atual deve fornecer um serviço específico com base na variável de ambiente.
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// No código do lado do servidor do plugin
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// Processa a lógica de negócio para este serviço
|
||||
} else {
|
||||
// Não processa a lógica de negócio para este serviço
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -358,6 +358,27 @@ Processadores de dados de rastreamento ativados. O padrão é `console`. Outros
|
||||
TELEMETRY_TRACE_PROCESSOR=console
|
||||
```
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Lista de permissões de destinos para requisições HTTP de saída iniciadas pelo servidor, usada para prevenir ataques SSRF (Server-Side Request Forgery). Aceita uma lista separada por vírgulas de IPs exatos, intervalos CIDR, nomes de host exatos e subdomínios curinga de um único nível.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Aplica-se a**: Nós de "Requisição HTTP" em workflows e botões de ação de requisição personalizada. Requisições com caminho relativo (chamadas à própria API do NocoBase) não são afetadas.
|
||||
|
||||
**Sem configuração**: Todas as requisições `http`/`https` de saída são permitidas (comportamento existente). **Configurado**: Apenas requisições cujo host corresponda a uma entrada da lista de permissões são permitidas; requisições sem correspondência geram um erro.
|
||||
|
||||
Formatos suportados:
|
||||
|
||||
| Formato | Exemplo | Corresponde a |
|
||||
| --- | --- | --- |
|
||||
| IPv4 exato | `1.2.3.4` | Apenas esse IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Todos os IPs na sub-rede |
|
||||
| Nome de host exato | `api.example.com` | Apenas esse nome de host |
|
||||
| Subdomínio curinga | `*.example.com` | Um nível de subdomínio, ex. `foo.example.com`; **não** corresponde a `example.com` ou `a.b.example.com` |
|
||||
|
||||
## Variáveis de Ambiente Experimentais
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -457,25 +478,3 @@ yarn cross-env \
|
||||
INIT_ROOT_NICKNAME="Super Admin" \
|
||||
nocobase install
|
||||
```
|
||||
## Variáveis de ambiente de outros plugins
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Lista de permissões de destinos para requisições HTTP de saída iniciadas pelo servidor, usada para prevenir ataques SSRF (Server-Side Request Forgery). Aceita uma lista separada por vírgulas de IPs exatos, intervalos CIDR, nomes de host exatos e subdomínios curinga de um único nível.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Aplica-se a**: Nós de "Requisição HTTP" em workflows e botões de ação de requisição personalizada. Requisições com caminho relativo (chamadas à própria API do NocoBase) não são afetadas.
|
||||
|
||||
**Sem configuração**: Todas as requisições `http`/`https` de saída são permitidas (comportamento existente). **Configurado**: Apenas requisições cujo host corresponda a uma entrada da lista de permissões são permitidas; requisições sem correspondência geram um erro.
|
||||
|
||||
Formatos suportados:
|
||||
|
||||
| Formato | Exemplo | Corresponde a |
|
||||
| --- | --- | --- |
|
||||
| IPv4 exato | `1.2.3.4` | Apenas esse IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Todos os IPs na sub-rede |
|
||||
| Nome de host exato | `api.example.com` | Apenas esse nome de host |
|
||||
| Subdomínio curinga | `*.example.com` | Um nível de subdomínio, ex. `foo.example.com`; **não** corresponde a `example.com` ou `a.b.example.com` |
|
||||
|
||||
@@ -65,14 +65,16 @@
|
||||
При разработке бизнес-плагинов вы можете разделять сервисы, потребляющие значительные ресурсы, в зависимости от требований сценария. Это можно реализовать следующими способами:
|
||||
|
||||
1. Определите новый идентификатор сервиса, например, `my-plugin:process`, для конфигурации переменной среды и предоставьте соответствующую документацию.
|
||||
2. В бизнес-логике серверной части плагина используйте интерфейс `app.serving()` для проверки среды и определения, должен ли текущий узел предоставлять определенный сервис на основе переменной среды.
|
||||
2. В бизнес-логике серверной части плагина используйте интерфейс `serving()` для проверки среды и определения, должен ли текущий узел предоставлять определенный сервис на основе переменной среды.
|
||||
|
||||
```javascript
|
||||
import { serving } from '@nocobase/server';
|
||||
|
||||
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
|
||||
// В серверном коде плагина
|
||||
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
if (serving(MY_PLUGIN_SERVICE_KEY)) {
|
||||
// Обработка бизнес-логики для этого сервиса
|
||||
} else {
|
||||
// Не обрабатывать бизнес-логику для этого сервиса
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
@@ -359,6 +359,27 @@ TELEMETRY_METRIC_READER=console,prometheus
|
||||
TELEMETRY_TRACE_PROCESSOR=console
|
||||
```
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Белый список разрешённых адресатов для исходящих HTTP-запросов на стороне сервера, используется для защиты от атак SSRF (Server-Side Request Forgery). Принимает список через запятую: точные IP-адреса, диапазоны CIDR, точные имена хостов и одноуровневые поддомены с подстановочным символом.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Применяется к**: узлам «HTTP-запрос» в рабочих процессах и кнопкам действий «Пользовательский запрос». Запросы с относительным путём (вызовы собственного API NocoBase) не затрагиваются.
|
||||
|
||||
**Не задано**: все исходящие запросы по `http`/`https` разрешены (текущее поведение). **Задано**: разрешены только запросы, чей хост соответствует записи в белом списке; несовпадающие запросы возвращают ошибку.
|
||||
|
||||
Поддерживаемые форматы:
|
||||
|
||||
| Формат | Пример | Соответствует |
|
||||
| --- | --- | --- |
|
||||
| Точный IPv4 | `1.2.3.4` | Только этот IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Все IP в подсети |
|
||||
| Точное имя хоста | `api.example.com` | Только это имя хоста |
|
||||
| Поддомен с подстановочным символом | `*.example.com` | Один уровень поддомена, напр. `foo.example.com`; **не** совпадает с `example.com` или `a.b.example.com` |
|
||||
|
||||
## Экспериментальные переменные среды
|
||||
|
||||
### APPEND_PRESET_LOCAL_PLUGINS
|
||||
@@ -458,25 +479,3 @@ yarn cross-env \
|
||||
INIT_ROOT_NICKNAME="Super Admin" \
|
||||
nocobase install
|
||||
```
|
||||
## Переменные окружения других плагинов
|
||||
|
||||
### SERVER_REQUEST_WHITELIST
|
||||
|
||||
Белый список разрешённых адресатов для исходящих HTTP-запросов на стороне сервера, используется для защиты от атак SSRF (Server-Side Request Forgery). Принимает список через запятую: точные IP-адреса, диапазоны CIDR, точные имена хостов и одноуровневые поддомены с подстановочным символом.
|
||||
|
||||
```bash
|
||||
SERVER_REQUEST_WHITELIST=1.2.3.4,10.0.0.0/8,api.example.com,*.trusted.com
|
||||
```
|
||||
|
||||
**Применяется к**: узлам «HTTP-запрос» в рабочих процессах и кнопкам действий «Пользовательский запрос». Запросы с относительным путём (вызовы собственного API NocoBase) не затрагиваются.
|
||||
|
||||
**Не задано**: все исходящие запросы по `http`/`https` разрешены (текущее поведение). **Задано**: разрешены только запросы, чей хост соответствует записи в белом списке; несовпадающие запросы возвращают ошибку.
|
||||
|
||||
Поддерживаемые форматы:
|
||||
|
||||
| Формат | Пример | Соответствует |
|
||||
| --- | --- | --- |
|
||||
| Точный IPv4 | `1.2.3.4` | Только этот IP |
|
||||
| IPv4 CIDR | `10.0.0.0/8` | Все IP в подсети |
|
||||
| Точное имя хоста | `api.example.com` | Только это имя хоста |
|
||||
| Поддомен с подстановочным символом | `*.example.com` | Один уровень поддомена, напр. `foo.example.com`; **не** совпадает с `example.com` или `a.b.example.com` |
|
||||
|
||||
Reference in New Issue
Block a user