Files
XTLS_Xray-docs-next/docs/config/env.md
T
yiguodevandyiguo 63d932f42f Env: Add new env configuration (#874)
* Document root env configuration

* Format env documentation

* Align config module spacing

* Document Docker env config file

* Move env docs to basic config

* Add env to basic config sidebar

* Clarify root env behavior

* Refine environment variable documentation

---------

Co-authored-by: yiguo <yiguo@example.com>
2026-07-10 13:05:06 +08:00

94 lines
3.3 KiB
Markdown

# 环境配置
Xray 可以通过配置文件根部的 `env` 对象或进程环境变量设置运行环境。
## 配置文件中的 `env`
配置文件根部可以写入 `env` 对象:
```jsonc
{
"env": {
"XRAY_LOCATION_ASSET": "/usr/local/share/xray",
"XRAY_LOCATION_CERT": "/usr/local/share/xray",
"XRAY_RAY_BUFFER_SIZE": "0"
}
}
```
`env` 的字段名和值都会按原样写入当前进程环境变量,且所有值都必须是字符串。字段不限于 Xray 定义的环境变量;Go 或其他依赖使用的环境变量也可以写入,但只有在应用 `env` 之后才读取该变量的代码会受到影响。
### 生效时机
- Xray 会先读取并合并全部配置文件,然后应用根 `env` 对象。
- `XRAY_LOCATION_ASSET`、`XRAY_LOCATION_CERT` 以及创建 Xray 实例时读取的运行时选项可以在根 `env` 中生效。
- 定位或解析当前配置文件时就需要的变量必须在 Xray 启动前设置。根 `env` 中的 `XRAY_LOCATION_CONFIG`、`XRAY_LOCATION_CONFDIR` 和 `XRAY_JSON_STRICT` 无法影响当前这次配置加载。
- 多配置文件合并时,后加载配置中完全相同的 key 会覆盖先前的值。
- 空字符串会把环境变量设置为空,但不会删除该环境变量。
- 根 `env` 修改的是进程全局环境,不提供实例级隔离,也不会在配置构建失败或实例停止时自动恢复。
## 配置加载前环境变量
以下三个变量必须在 Xray 读取配置前设置为进程环境变量,不能通过当前配置文件的根 `env` 设置。
### 配置文件位置
- 名称:`XRAY_LOCATION_CONFIG`。
- 默认值:和 Xray 文件同路径。
这个环境变量指定包含 `config.json` 的目录。
### 多配置目录
- 名称:`XRAY_LOCATION_CONFDIR`。
- 默认值:`""`。
这个目录内的 `.json` 文件会按文件名顺序读取。启动参数 `confdir` 的优先级高于该环境变量。
### 严格 JSON 解析器
- 名称:`XRAY_JSON_STRICT`。
- 默认值:`false`。
默认情况下,Xray 使用自定义 JSON 解析器剔除注释及其他非标准字符。配置文件严格遵循 JSON 标准(RFC 8259)时,可以启用此选项使用标准 JSON 解析器;对于几十 MB 以上的大型配置,解析速度可能有所提升。
## 资源路径环境变量
以下两个变量可以通过进程环境变量或配置文件根 `env` 设置。
### 资源文件路径
- 名称:`XRAY_LOCATION_ASSET`。
- 默认值:特定 [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) 目录或 Xray 文件同路径。
这个环境变量指定资源文件目录,其中通常包含 `geoip.dat` 和 `geosite.dat`。若未指定,程序会按以下顺序寻找资源文件:
```text
./
/usr/local/share/xray
/usr/share/xray
```
### 证书文件路径
- 名称:`XRAY_LOCATION_CERT`。
- 默认值:和 Xray 文件同路径。
这个环境变量指定相对证书文件的基础目录。
## 其他运行时环境变量
以下变量也可以通过进程环境变量或配置文件根 `env` 设置:
- `XRAY_BUF_READV`
- `XRAY_BUF_SPLICE`
- `XRAY_VMESS_PADDING`
- `XRAY_CONE_DISABLED`
- `XRAY_RAY_BUFFER_SIZE`
- `XRAY_BROWSER_DIALER`
- `XRAY_XUDP_SHOW`
- `XRAY_XUDP_BASEKEY`
- `XRAY_TUN_FD`
这些选项面向有特殊需求的用户,可以阅读源代码了解其具体用途。