mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-10-14 01:59:09 +03:00
https://github.com/XTLS/Xray-core/pull/6400 Co-authored-by: yiguodev <147401898+yiguodev@users.noreply.github.com>
140 lines
4.4 KiB
Markdown
140 lines
4.4 KiB
Markdown
# 环境变量
|
|
|
|
环境变量用于调整 Xray 的一些底层配置。
|
|
|
|
既可以通过配置文件中的 `env` 配置块设置,也可以在启动 Xray 前通过传统方式设置进程环境变量。
|
|
|
|
::: tip 变量名称
|
|
Xray 内置变量同时支持点号分隔的小写名称和下划线分隔的大写名称,例如 `xray.location.asset` 与 `XRAY_LOCATION_ASSET`。两者同时存在时,点号形式优先。<br>下文统一使用点号形式;通过 Shell 或服务管理器设置时,建议使用兼容性更好的大写下划线形式。
|
|
:::
|
|
|
|
## EnvObject
|
|
|
|
`EnvObject` 对应配置文件的 `env` 项,其内容为环境变量名称与值的映射。
|
|
|
|
```json
|
|
{
|
|
"env": {
|
|
"xray.location.asset": "/usr/local/share/xray",
|
|
"xray.buf.readv": "true",
|
|
"xray.ray.buffer.size": "2"
|
|
// ...
|
|
}
|
|
}
|
|
```
|
|
|
|
> `环境变量名称`: string
|
|
|
|
环境变量的名称和值都必须是字符串。Xray 读取并合并所有配置文件后,会在构建各模块前将 `env` 中的项目写入当前进程的环境变量。
|
|
|
|
::: tip
|
|
使用[多文件配置](./features/multiple.md)时,各文件中的 `env` 配置块会按键合并,后加载的同名键覆盖先前的值。
|
|
|
|
`env` 配置块会按所写名称设置变量;如果进程环境中已经存在完全相同的名称,其值会被覆盖。
|
|
:::
|
|
|
|
::: warning
|
|
`env` 配置块只能在配置文件完成定位、读取与合并后生效。因此,要让以下三个选项对本次启动生效,必须在启动 Xray 前通过进程环境变量提供;将它们写入 `env` 配置块无法影响本次配置文件的定位或解析:
|
|
|
|
- `xray.json.strict`
|
|
- `xray.location.config`
|
|
- `xray.location.confdir`
|
|
|
|
:::
|
|
|
|
## 设置进程环境变量
|
|
|
|
以下示例同时设置资源文件路径和严格 JSON 解析器:
|
|
|
|
::: code-group
|
|
|
|
```bash [Shell]
|
|
# 在当前 Shell 及由它启动的子进程中设置
|
|
export XRAY_LOCATION_ASSET=/usr/local/share/xray
|
|
export XRAY_JSON_STRICT=true
|
|
|
|
# 也可以仅为单次 Xray 启动设置,多个变量之间使用空格分隔
|
|
XRAY_LOCATION_ASSET=/usr/local/share/xray XRAY_JSON_STRICT=true xray run
|
|
```
|
|
|
|
```powershell [PowerShell]
|
|
# 在当前 PowerShell 及由它启动的子进程中设置
|
|
$env:XRAY_LOCATION_ASSET = "C:\Xray"
|
|
$env:XRAY_JSON_STRICT = "true"
|
|
```
|
|
|
|
```batch [CMD]
|
|
:: 在当前 CMD 及由它启动的子进程中设置
|
|
set "XRAY_LOCATION_ASSET=C:\Xray"
|
|
set "XRAY_JSON_STRICT=true"
|
|
```
|
|
|
|
```ini [systemd]
|
|
# 在 Xray 服务的 [Service] 段中设置
|
|
[Service]
|
|
Environment="XRAY_LOCATION_ASSET=/usr/local/share/xray"
|
|
Environment="XRAY_JSON_STRICT=true"
|
|
```
|
|
|
|
:::
|
|
|
|
## Xray 内置变量
|
|
|
|
### 资源文件路径
|
|
|
|
- 名称:`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.config`。
|
|
- 默认值:Xray 可执行文件所在目录。
|
|
|
|
这个变量指定包含 `config.json` 文件的目录。
|
|
|
|
写入 `env` 配置块无效,因为 Xray 在读取该配置块之前就已经完成了配置文件定位。
|
|
|
|
### 多配置目录
|
|
|
|
- 名称:`xray.location.confdir`。
|
|
- 默认值:`""`。
|
|
|
|
这个目录内的 `.json` 文件会按文件名顺序读取,作为多文件配置。
|
|
|
|
写入 `env` 配置块无效,因为 Xray 在读取该配置块之前就已经完成了配置目录定位。
|
|
|
|
此项优先级低于启动参数 `confdir`。
|
|
|
|
### 严格 JSON 解析器
|
|
|
|
- 名称:`xray.json.strict`。
|
|
- 默认值:`false`。
|
|
|
|
默认情况下,Xray 在启动时会使用自定义 JSON 解析器,该解析器会从配置中剔除注释及其他非标准字符。如果你确认自己的配置文件严格遵循 JSON 标准(RFC 8259),可以启用此选项以使用标准 JSON 解析器,在配置文件极大时(几十 MB 以上)可以提升其解析速度。
|
|
|
|
写入 `env` 配置块无效,因为 Xray 必须先选择 JSON 解析器才能读取该配置块。
|
|
|
|
### 其它可用变量
|
|
|
|
- `xray.location.cert`
|
|
- `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`
|
|
|
|
这些选项用于特殊需求。你可以阅读源代码以了解其具体用途。
|