docs(docs): sync translated env and cluster docs (#9115)

This commit is contained in:
Junyi
2026-04-15 14:14:17 +08:00
committed by GitHub
parent d739c180d0
commit f64bd24505
18 changed files with 233 additions and 222 deletions
@@ -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 {
// 不处理该服务的业务逻辑
+21 -21
View File
@@ -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
}
```
```
+21 -22
View File
@@ -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
}
```
```
+21 -21
View File
@@ -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
}
```
```
+21 -22
View File
@@ -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
}
```
```
+21 -22
View File
@@ -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 {
// このサービスのビジネスロジックは処理しない
}
```
```
+21 -22
View File
@@ -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 {
// 해당 서비스의 비즈니스 로직을 처리하지 않음
}
```
```
+21 -22
View File
@@ -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
}
```
```
+21 -22
View File
@@ -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 {
// Не обрабатывать бизнес-логику для этого сервиса
}
```
```
+21 -22
View File
@@ -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` |