> ## 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.idleTimeout

控制 HTTP 和 TLS 連線的空閒逾時時間。此設定決定 Jetty 在關閉連線之前等待連線活動的時間（以毫秒為單位）。

### 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=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`
