> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# arc.properties 配置

> 嵌入式 Jetty Web 服务器的知行之桥arc.properties 文件中所有受支持配置选项的参考指南。

export const siteNameShort = "知行之桥";

export const siteName = "知行之桥";

本参考指南涵盖了 {siteName} 的 `arc.properties` 文件中所有支持的配置选项。该文件用于[嵌入式 Jetty Web 服务器](./cross-platform-edition#configuring-the-embedded-jetty-server)。

要将这些选项添加到 {siteNameShort} 应用程序，请使用文本编辑器打开 `arc.properties` 文件（位于安装目录中），然后添加相应的语法。可以在下面找到每个选项的示例。

<Tip>以下选项在实现过程中的任何 {siteNameShort} `.properties` 文件中均可使用。</Tip>

## 使用变量

您可以在配置选项中提供变量，但必须注意以下事项：

* 您可以将变量用作属性值，但不能将其用作属性名称。
* 变量名称区分大小写。
* 系统属性优先于环境变量。如果在系统属性或环境变量中未找到变量，则默认为空字符串。
* 变量不能嵌套。例如，不允许使用 `cdata.warPath=${cdata.prefix${cdata.arc}}/webapp`。

以下示例使用配置选项中的变量执行以下操作：

* 定义初始化参数
* 设置自定义标头

```
cdata.initParameters=ARCCLOUD_SERVICE_DEFINITION_PATH:${cdata.home}/service.json,APP_LOGS:${cdata.logdb}
cdata.http.customHeaders=Product-Version:[${ARC_ISSUER} 2025];/api.rsc,Product-Issuer:${ARC_ISSUER}
```

## 配置选项

### cdata.app.db

定义 {siteNameShort} 使用的后端数据库的连接字符串。

`cdata.app.db=jdbc:cdata:mysql:server=localhost;port=3306;database=mysql;user=MyUserName;password=MyPassword`

### cdata.app.directory

定义 {siteNameShort} 的用户数据存储路径。

`cdata.app.directory=/mnt/shared/arc`

### cdata.contextPath

定义部署 Web 应用程序的基本 URL 路径。它充当 Web 应用程序处理的所有 URL 的前缀。

`cdata.contextPath=/myapp`

例如，如果应用程序托管在`www.mydomain.com`，则这可确保接收端点是`http://www.mydomain.com/myapp/pub/Receive.rsb`。

### cdata.encryption.key

指定 AES 密钥文件的路径（包含随机字符串），或 PFX (PKCS#12) 证书文件，作为主密钥使用。主密钥用于加密加密密钥，而加密密钥则加密 {siteNameShort} 中密码和机密等敏感数据。仅在想要使用自定义密钥或将密钥存储在非默认位置时才需要。

`cdata.encryption.key=file:///var/opt/mykeys/mysecret.key`

或者，如果使用 AES 密钥，可以使用 `APP_KEY` 环境变量来提供密钥文件的文件路径。

### cdata.encryption.key.password

定义用于主密钥的 PFX 文件的密码（使用 [cdata.encryption.key](#cdata-encryption-key) 设置）。

`cdata.encryption.key.password=MyS3curePa55w0rd`

或者，可以使用环境变量（例如 `ENCRYPTION_KEY_PASSWORD`）来存储密码，并在此处引用。

`cdata.encryption.key.password=${ENCRYPTION_KEY_PASSWORD}`

### cdata.fips.enabled

布尔选项，用于控制是否启用联邦信息处理标准 (FIPS) 模式。FIPS 是由美国联邦政府制定的一套安全标准，用于计算机系统，以确保安全性、互操作性和数据完整性。

`cdata.fips.enabled=true`

### cdata.http.customHeaders

允许您以以下格式的连接字符串键值对的形式提供自定义标头：`key:value`。

当包含变量时，字符串会在变量首次出现时拆分，并替换该变量。只有值可以使用变量。

`cdata.http.customHeaders=Product-Version:[${ARC_ISSUER} 2025];/api.rsc,Product-Issuer:${ARC_ISSUER}`

### cdata.http.gzipEnabled

布尔选项，用于控制是否为 HTTP 响应启用 GZIP 压缩。启用后，Jetty 会自动压缩响应以减少带宽占用，从而提高支持 GZIP 的客户端的性能。

`cdata.http.gzipEnabled=true`

### cdata.http.host

设置 Jetty HTTP 服务器应绑定的主机/IP 地址。这决定了服务器监听传入 HTTP 请求的网络接口。

`cdata.http.host=192.168.0.27`

### cdata.http.maxFormSize

定义 HTTP 表单提交（例如 application/x-www-form-urlencoded 和 multipart/form-data 请求）允许的最大大小（以字节为单位）。它限制了表单提交（包括通过表单上传文件）中可处理的数据量。

`cdata.http.maxFormSize=2000000`

### cdata.http.port

设置 {siteNameShort} 运行和监听的 HTTP 端口。

`cdata.http.port=4080`

### cdata.http.proxyMode

布尔选项，用于确定 Jetty 是在反向代理还是负载均衡器后面运行。启用后，Jetty 会正确处理代理请求，包括 X-Forwarded-For 和 X-Forwarded-Proto 等标头。

* 如果设置为 true，Jetty 会信任来自代理的 X-Forwarded-\* 标头。
* 如果设置为 false，Jetty 会忽略这些标头并假定客户端直接连接。

这可确保在代理后运行时能够正确检测客户端 IP、进行 HTTPS 重定向和主机解析。

`cdata.http.proxyMode=true`

### cdata.http.timeout

控制 HTTP 连接的空闲超时时间。此设置决定 Jetty 在关闭连接之前等待连接活动的时间（以毫秒为单位）。

`cdata.http.timeout=60000`

### cdata.initParameters

定义 Servlet 的初始化参数。这些参数是连接在一起的字符串键值对，供 Servlet 或过滤器在运行时访问。它们必须以逗号分隔的字符串形式设置，格式如下：`key:value`。

当包含变量时，字符串会在变量首次出现时被拆分，并替换该变量。只有值可以使用变量。

`cdata.initParameters=ARCCLOUD_SERVICE_DEFINITION_PATH:${cdata.home}/service.json,APP_LOGS:${cdata.logdb}`

### cdata.loginService.ldap

这被解释为 `cdata.loginService.ldap.*`。这些属性用于在 Jetty 中配置轻量级目录访问协议 (LDAP) 身份验证，允许用户通过 LDAP 服务器进行身份验证。支持多种属性。在嵌入式 Jetty 服务器上使用 LDAP 时，至少需要以下属性：

```
cdata.loginService.ldap.hostname
cdata.loginService.ldap.bindDn
cdata.loginService.ldap.bindPassword
```

`arc.properties` 的完整 LDAP 部分可能如下所示：

```
;; LDAP
cdata.loginService.ldap.enabled=true
cdata.loginService.ldap.bindDn="CN=ldapuser,DC=example,DC=org"
cdata.loginService.ldap.hostname="127.0.0.1"
cdata.loginService.ldap.bindPassword="Adminpassword1"
cdata.loginService.ldap.port="1389"
cdata.loginService.ldap.debug=true
cdata.loginService.ldap.authenticationMethod="simple"
cdata.loginService.ldap.userBaseDn="DC=example,DC=org"
cdata.loginService.ldap.userRdnAttribute="cn"
cdata.loginService.ldap.userPasswordAttribute="userPassword"
cdata.loginService.ldap.forceBindingLogin="true"
cdata.loginService.ldap.roleBaseDn="DC=example,DC=org"
cdata.loginService.ldap.roleNameAttribute="cn"
cdata.loginService.ldap.roleMemberAttribute="member"
cdata.loginService.ldap.useLdaps="false"
```

请参阅[配置 LDAP 身份验证](./cross-platform-edition#configuring-ldap-authentication)以获取更多上下文以及受支持的属性的完整列表。

### cdata.loginService.ldap.enabled

布尔值，用于确定 Jetty 中是否启用了 LDAP 身份验证。此属性通常用于根据您的配置需求启用或禁用整个基于 LDAP 的登录服务。

`cdata.loginService.ldap.enabled=true`

### cdata.requestLog.enabled

用于控制 Jetty 是否将 HTTP 请求记录到访问日志的布尔值。启用后，Jetty 会记录传入请求的详细信息，例如客户端 IP、请求方法、响应状态和响应时间。

`cdata.requestLog.enabled=true`

### cdata.requestLog.filenameDateFormat

指定 Jetty 在轮转日志时附加到日志文件名的日期格式模式。这有助于按天、小时或自定义间隔整理日志。

* 与 `cdata.requestLog.filename` 一起使用，生成轮转日志文件名。
* 该格式遵循 Java 的 `SimpleDateFormat` 模式。默认值为 `yyyy_MM_dd`，表示每天创建一个新的日志文件。
* 如果为空 (`""`)，Jetty 将禁用基于日期的轮转。

`cdata.requestLog.filenameDateFormat=MM_dd_yyyy`

### cdata.requestLog.retainDays

指定 Jetty 在自动删除旧访问日志之前保留它们的天数。

* 默认值为 `31`，表示 Jetty 会在删除日志之前保留 31 天。
* 设置为 `0` 时，Jetty 将禁用日志保留，这意味着日志永远不会自动删除。
* 与 `cdata.requestLog.filenameDateFormat` 一起使用，用于管理轮换日志文件。

`cdata.requestLog.retainDays=90`

### cdata.session.timeout

定义 Jetty Web 服务器中用户会话过期之前的最大不活动持续时间（以秒为单位）。

* 默认值为 `600` 秒（10 分钟）。
* 小于或等于 `0` 的值将被忽略。

`cdata.session.timeout=1200`

### cdata.tempDirectory

定义应用程序使用的临时目录的位置。

`cdata.tempDirectory=/tmp/arc`

### cdata.tls.keyStoreType

指定 Jetty 应用于 TLS/SSL 证书的密钥库类型。密钥库包含 Jetty 建立安全 HTTPS 连接所需的私钥和 SSL 证书。

常见类型包括 JKS、PKCS12、BKS 和 PEM。

`cdata.tls.keyStoreType=PEM`

### cdata.tls.keyStorePassword

定义指定密钥库的密码。

`cdata.tls.keyStorePassword=Password123`

### cdata.tls.keyStorePath

指定 Jetty 应用于 TLS/SSL 加密的密钥库的文件路径。

`cdata.tls.keyStorePath=/pathto/mykeystore.jks`

### cdata.tls.port

指定 Jetty 用于 TLS（HTTPS）连接的端口号。这是 `cdata.http.port` 的安全替代方案，用于纯 HTTP 流量。

`cdata.tls.port=443`

### cdata.tls.sniHostCheck

布尔值，控制 Jetty 是否在 TLS/SSL 连接中的服务器名称指示 (SNI) 处理期间强制执行主机名验证。

`cdata.tls.sniHostCheck=true`

### cdata.warPath

如果 `arc.war` 文件位于其他位置，则设置其路径。

`cdata.warPath=${cdata.home}/webapp/arc.war`
