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>
This commit is contained in:
yiguodev
2026-07-10 13:05:06 +08:00
committed by GitHub
co-authored by yiguo
parent 5db24cc2d6
commit 63d932f42f
27 changed files with 391 additions and 265 deletions
+22 -25
View File
@@ -2,36 +2,12 @@ import type { DefaultTheme } from "vitepress"
export const sidebar: DefaultTheme.Config["sidebar"] = {
"/en/config/": [
{
text: "Feature Details",
link: "/en/config/features/",
collapsed: true,
items: [
{ text: "XTLS Deep Dive", link: "/en/config/features/xtls.md" },
{ text: "Fallback", link: "/en/config/features/fallback.md" },
{
text: "Browser Dialer",
link: "/en/config/features/browser_dialer.md"
},
{
text: "Environment Variables",
link: "/en/config/features/env.md"
},
{
text: "Multiple Configurations",
link: "/en/config/features/multiple.md"
},
{
text: "Reverse Proxy / NAT Traversal",
link: "/en/document/level-2/vless_reverse.md"
}
]
},
{
text: "Basic Configuration",
link: "/en/config/",
collapsed: true,
items: [
{ text: "Environment Configuration", link: "/en/config/env.md" },
{ text: "Log Configuration", link: "/en/config/log.md" },
{ text: "API Interface", link: "/en/config/api.md" },
{ text: "Built-in DNS Server", link: "/en/config/dns.md" },
@@ -50,6 +26,27 @@ export const sidebar: DefaultTheme.Config["sidebar"] = {
{ text: "Geodata Files", link: "/en/config/geodata.md" }
]
},
{
text: "Feature Details",
link: "/en/config/features/",
collapsed: true,
items: [
{ text: "XTLS Deep Dive", link: "/en/config/features/xtls.md" },
{ text: "Fallback", link: "/en/config/features/fallback.md" },
{
text: "Browser Dialer",
link: "/en/config/features/browser_dialer.md"
},
{
text: "Multiple Configurations",
link: "/en/config/features/multiple.md"
},
{
text: "Reverse Proxy / NAT Traversal",
link: "/en/document/level-2/vless_reverse.md"
}
]
},
{
text: "Inbound Protocols",
link: "/en/config/inbounds/",
+19 -19
View File
@@ -2,30 +2,12 @@ import type { DefaultTheme } from "vitepress"
export const sidebar: DefaultTheme.Config["sidebar"] = {
"/config/": [
{
text: "特性详解",
link: "/config/features/",
collapsed: true,
items: [
{ text: "XTLS 深度剖析", link: "/config/features/xtls.md" },
{ text: "Fallback 回落", link: "/config/features/fallback.md" },
{
text: "Browser Dialer",
link: "/config/features/browser_dialer.md"
},
{ text: "环境变量", link: "/config/features/env.md" },
{ text: "多文件配置", link: "/config/features/multiple.md" },
{
text: "反向代理 / 内网穿透",
link: "/document/level-2/vless_reverse.md"
}
]
},
{
text: "基础配置",
link: "/config/",
collapsed: true,
items: [
{ text: "环境配置", link: "/config/env.md" },
{ text: "日志配置", link: "/config/log.md" },
{ text: "API 接口", link: "/config/api.md" },
{ text: "内置 DNS 服务器", link: "/config/dns.md" },
@@ -41,6 +23,24 @@ export const sidebar: DefaultTheme.Config["sidebar"] = {
{ text: "地理数据文件", link: "/config/geodata.md" }
]
},
{
text: "特性详解",
link: "/config/features/",
collapsed: true,
items: [
{ text: "XTLS 深度剖析", link: "/config/features/xtls.md" },
{ text: "Fallback 回落", link: "/config/features/fallback.md" },
{
text: "Browser Dialer",
link: "/config/features/browser_dialer.md"
},
{ text: "多文件配置", link: "/config/features/multiple.md" },
{
text: "反向代理 / 内网穿透",
link: "/document/level-2/vless_reverse.md"
}
]
},
{
text: "入站协议",
link: "/config/inbounds/",
+28 -31
View File
@@ -2,42 +2,12 @@ import type { DefaultTheme } from "vitepress"
export const sidebar: DefaultTheme.Config["sidebar"] = {
"/ru/config/": [
{
text: "Обзор",
link: "/ru/config/features/",
collapsed: true,
items: [
{
text: "Глубокий анализ XTLS",
link: "/ru/config/features/xtls.md"
},
{
text: "Fallback",
link: "/ru/config/features/fallback.md"
},
{
text: "Browser Dialer",
link: "/ru/config/features/browser_dialer.md"
},
{
text: "Переменные окружения",
link: "/ru/config/features/env.md"
},
{
text: "Конфигурация из нескольких файлов",
link: "/ru/config/features/multiple.md"
},
{
text: "Обратный прокси / NAT Traversal",
link: "/ru/document/level-2/vless_reverse.md"
}
]
},
{
text: "Базовая конфигурация",
link: "/ru/config/",
collapsed: true,
items: [
{ text: "Конфигурация среды", link: "/ru/config/env.md" },
{ text: "Настройка журнала", link: "/ru/config/log.md" },
{ text: "API", link: "/ru/config/api.md" },
{ text: "Встроенный DNS-сервер", link: "/ru/config/dns.md" },
@@ -62,6 +32,33 @@ export const sidebar: DefaultTheme.Config["sidebar"] = {
}
]
},
{
text: "Обзор",
link: "/ru/config/features/",
collapsed: true,
items: [
{
text: "Глубокий анализ XTLS",
link: "/ru/config/features/xtls.md"
},
{
text: "Fallback",
link: "/ru/config/features/fallback.md"
},
{
text: "Browser Dialer",
link: "/ru/config/features/browser_dialer.md"
},
{
text: "Конфигурация из нескольких файлов",
link: "/ru/config/features/multiple.md"
},
{
text: "Обратный прокси / NAT Traversal",
link: "/ru/document/level-2/vless_reverse.md"
}
]
},
{
text: "Входящие подключения",
link: "/ru/config/inbounds/",
+93
View File
@@ -0,0 +1,93 @@
# 环境配置
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`
这些选项面向有特殊需求的用户,可以阅读源代码了解其具体用途。
+2 -56
View File
@@ -1,57 +1,3 @@
# 环境变量
# 环境配置已移动
Xray 提供以下环境变量以供修改 Xray 的一些底层配置。
## 资源文件路径
- 名称:`xray.location.asset` 或 `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_LOCATION_CONFIG`。
- 默认值:和 Xray 文件同路径。
这个环境变量指定了一个文件夹位置,这个文件夹应当包含 config.json 文件。
## 多配置目录
- 名称:`xray.location.confdir` 或 `XRAY_LOCATION_CONFDIR`。
- 默认值:`""`。
这个目录内的 `.json` 文件会按文件名顺序读取,作为多配置选项。
此项优先级低于启动参数 `confdir`。
## 严格 JSON 解析器
- 名称:`xray.json.strict` 或 `XRAY_JSON_STRICT`。
- 默认值:`false`。
默认情况下,Xray 在启动时会使用自定义的 JSON 解析器(该解析器会从配置中剔除注释及其他非标准字符)。如果你确认自己的配置文件严格遵循 JSON 标准(RFC8259),可以启用此选项以使用标准 JSON 解析器,在配置文件极大时(几十 MB 以上)可以提升其解析速度。
## 其它可用的配置
- xray.location.plugin
- xray.location.tool
- xray.location.cert
- xray.buf.readv
- xray.buf.splice
- xray.vmess.padding
- xray.ray.buffer.size
- xray.browser.dialer
- xray.xudp.show
- xray.xudp.basekey
这些选项对有特殊需求的用户开放,您可以阅读源代码来发现其用途。~~PR Welcome~~
`env` 是基础配置模块,文档已移动到 [环境配置](../env.md)。
-1
View File
@@ -5,6 +5,5 @@ Xray 具备以下特性:
- [XTLS 深度剖析](xtls.md)
- [Fallback 回落](fallback.md)
- [Browser Dialer](browser_dialer.md)
- [环境变量](env.md)
- [多文件配置](multiple.md)
- [反向代理 / 内网穿透](/document/level-2/vless_reverse.md)
+1 -1
View File
@@ -61,4 +61,4 @@
写入的资源文件名,例如 `geoip.dat`、`geosite.dat`。
该文件会按 [资源文件路径](./features/env.md#资源文件路径) 解析,并且必须是资源目录内已经存在的普通文件;不支持绝对路径或跳出资源目录的路径。
该文件会按 [资源文件路径](./env.md#资源文件路径) 解析,并且必须是资源目录内已经存在的普通文件;不支持绝对路径或跳出资源目录的路径。
+7 -2
View File
@@ -13,6 +13,7 @@ Xray 的配置文件为 json 格式, 客户端和服务端的配置格式没有
```json
{
"env": {},
"log": {},
"api": {},
"dns": {},
@@ -162,11 +163,15 @@ https://xtls.github.io/llms-full.txt
## 基础配置模块
> log:[LogObject](./log.md)
> env: [EnvObject](./env.md)
设置进程环境变量。配置解析完成后生效,可用于 Xray 运行时选项,也可设置之后才读取的 Go 或依赖环境变量。
> log: [LogObject](./log.md)
日志配置,控制 Xray 输出日志的方式.
> api:[ApiObject](./api.md)
> api: [ApiObject](./api.md)
提供了一些 API 接口供远程调用。
+2 -2
View File
@@ -93,7 +93,7 @@
- 完整匹配:由 `"full:"` 开始,余下部分是一个域名。当此域名完整匹配目标域名时,该规则生效。例如 "full:xray.com" 匹配 "xray.com" 但不匹配 "www.xray.com"。
- 无点域名:由 `"dotless:"` 开头,余下部分是一个不能含有 `.` 的字符串。当域名不含 `.` 且此字符串匹配目标域名中任意部分,该规则生效。例如 "dotless:pc-" 可以匹配 "pc-alice"、"mypc-alice",适用于内网 NetBIOS 域等。大小写敏感。
- 预定义域名列表:由 `"geosite:"` 开头,余下部分是一个名称,如 `geosite:google` 或者 `geosite:cn`。名称及域名列表参考 [预定义域名列表](#预定义域名列表)。
- 从文件中加载域名:形如 `"ext:file:tag"`,必须以 `ext:`(小写)开头,后面跟文件名和标签,文件存放在 [资源目录](./features/env.md#资源文件路径) 中,文件格式与 `geosite.dat` 相同,标签必须在文件中存在。
- 从文件中加载域名:形如 `"ext:file:tag"`,必须以 `ext:`(小写)开头,后面跟文件名和标签,文件存放在 [资源目录](./env.md#资源文件路径) 中,文件格式与 `geosite.dat` 相同,标签必须在文件中存在。
::: tip
`"ext:geoip.dat:cn"` 等价于 `"geoip:cn"`
@@ -107,7 +107,7 @@
- [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing):形如 `"10.0.0.0/8"`,也可以用 `"0.0.0.0/0"` `"::/0"` 来指定所有 IPv4 或者 IPv6。
- 预定义 IP 列表:此列表预置于每一个 Xray 的安装包中,文件名为 `geoip.dat`。使用方式形如 `"geoip:cn"`,必须以 `geoip:`(小写)开头,后面跟双字符国家代码,支持几乎所有可以上网的国家。
- 特殊值:`"geoip:private"`,包含所有私有地址,如 `127.0.0.1`。
- 从文件中加载 IP:形如 `"ext:file:tag"`,必须以 `ext:`(小写)开头,后面跟文件名和标签,文件存放在 [资源目录](./features/env.md#资源文件路径) 中,文件格式与 `geoip.dat` 相同标签必须在文件中存在。
- 从文件中加载 IP:形如 `"ext:file:tag"`,必须以 `ext:`(小写)开头,后面跟文件名和标签,文件存放在 [资源目录](./env.md#资源文件路径) 中,文件格式与 `geoip.dat` 相同标签必须在文件中存在。
- 反选 `!` 功能:`"!10.0.0.0/8"` 表示非 `10.0.0.0/8`,`"!geoip:cn"` 表示非 `geoip:cn` 中的结果。多个反选项之间是 `AND` 关系,而正选项、正选项和所有的反选项之间是 `OR` 关系,例如 `ip: ["!geoip:cn", "!geoip:us", "geoip:telegram"]` 匹配非美国并且非中国的 IP,或者是 telegram 的 IP。
> `port`:number | string
+2 -2
View File
@@ -110,7 +110,7 @@ xray run -config http+unix:///run/xray-config.sock/config.json
当 `-config` 没有指定时,Xray 将先后尝试从以下路径加载 `config.json` :
- 工作目录(Working Directory)
- [环境变量](../config/features/env.md#资源文件路径)中 `Xray.location.asset` 所指定的路径
- [环境变量](../config/env.md#资源文件路径)中 `Xray.location.asset` 所指定的路径
:::
```bash
@@ -255,7 +255,7 @@ xray wg [-i "(base64.StdEncoding)"]
当 `-config` 没有指定时,Xray 将先后尝试从以下路径加载 `config.json` :
- 工作目录(Working Directory)
- [环境变量](../config/features/env.md#资源文件路径)中 `Xray.location.asset` 所指定的路径
- [环境变量](../config/env.md#资源文件路径)中 `Xray.location.asset` 所指定的路径
:::
### xray mldsa65
+1
View File
@@ -88,6 +88,7 @@ Xray 提供两种验证方式:
- 09_metrics.json
- 10_observatory.json
- 11_geodata.json
- 12_env.json
- 99_version.json
- `/usr/local/share/xray/`:资源文件目录,存放了 Loyalsoldier 版本地理位置数据文件(拥有者是 `65532:65532`、目录权限 `755`、文件权限 `644`)
- geoip.dat
+93
View File
@@ -0,0 +1,93 @@
# Environment Configuration
Xray can configure its runtime environment through the root `env` object or process environment variables.
## `env` in the Configuration File
The root of a configuration file can contain an `env` object:
```jsonc
{
"env": {
"XRAY_LOCATION_ASSET": "/usr/local/share/xray",
"XRAY_LOCATION_CERT": "/usr/local/share/xray",
"XRAY_RAY_BUFFER_SIZE": "0"
}
}
```
Every key and value in `env` is written unchanged to the current process environment, and every value must be a string. Keys are not limited to environment variables defined by Xray. Go environment variables and variables used by other dependencies can also be set, but they only affect code that reads them after `env` is applied.
### When It Takes Effect
- Xray reads and merges all configuration files before applying the root `env` object.
- `XRAY_LOCATION_ASSET`, `XRAY_LOCATION_CERT`, and runtime options read while creating an Xray instance can take effect from the root `env` object.
- Variables required to locate or parse the current configuration must be set before Xray starts. `XRAY_LOCATION_CONFIG`, `XRAY_LOCATION_CONFDIR`, and `XRAY_JSON_STRICT` in the root `env` object cannot affect the current configuration load.
- When multiple configuration files are merged, an identical key in a later file overrides the earlier value.
- An empty string sets the environment variable to an empty value; it does not remove the variable.
- The root `env` object changes the process-wide environment. It provides no per-instance isolation and is not automatically restored when configuration building fails or an instance stops.
## Pre-Load Environment Variables
The following three variables must be set in the process environment before Xray reads the configuration. They cannot be supplied by the root `env` object in the current configuration.
### Configuration File Location
- Name: `XRAY_LOCATION_CONFIG`.
- Default value: The same path as the Xray executable.
This environment variable specifies the directory containing `config.json`.
### Multiple Configuration Directory
- Name: `XRAY_LOCATION_CONFDIR`.
- Default value: `""`.
The `.json` files in this directory are read in filename order. The `confdir` command-line argument has higher priority than this environment variable.
### Strict JSON Parser
- Name: `XRAY_JSON_STRICT`.
- Default value: `false`.
By default, Xray uses a custom JSON parser that removes comments and other non-standard characters. If the configuration strictly follows JSON (RFC 8259), this option enables the standard JSON parser and may improve parsing speed for very large configuration files.
## Resource Path Environment Variables
The following two variables can be set through either the process environment or the root `env` object.
### Resource File Path
- Name: `XRAY_LOCATION_ASSET`.
- Default value: Specific [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) directories or the same path as the Xray executable.
This environment variable specifies the resource directory, which usually contains `geoip.dat` and `geosite.dat`. If it is not set, Xray searches for resource files in this order:
```text
./
/usr/local/share/xray
/usr/share/xray
```
### Certificate File Path
- Name: `XRAY_LOCATION_CERT`.
- Default value: The same path as the Xray executable.
This environment variable specifies the base directory for relative certificate file paths.
## Other Runtime Environment Variables
The following variables can also be set through either the process environment or the root `env` object:
- `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`
These options are intended for users with special requirements. Refer to the source code for their exact behavior.
+2 -56
View File
@@ -1,57 +1,3 @@
# Environment Variables
# Environment Configuration Has Moved
Xray provides the following environment variables to modify some underlying configurations of Xray.
## Resource File Path
- Name: `xray.location.asset` or `XRAY_LOCATION_ASSET`.
- Default value: Specific [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) directories or the same path as the Xray executable.
This environment variable specifies a folder location that should contain the `geoip.dat` and `geosite.dat` files.
If no variable value is specified, the program will look for resource files in the following order:
```text
./
/usr/local/share/xray
/usr/share/xray
```
## Configuration File Location
- Name: `xray.location.config` or `XRAY_LOCATION_CONFIG`.
- Default value: The same path as the Xray executable.
This environment variable specifies a folder location that should contain the `config.json` file.
## Multiple Configuration Directory
- Name: `xray.location.confdir` or `XRAY_LOCATION_CONFDIR`.
- Default value: `""`.
The `.json` files in this directory will be read in alphabetical order of their filenames as multiple configuration options.
This item has lower priority than the startup argument `confdir`.
## Strict JSON Parser
- Name: `xray.json.strict` or `XRAY_JSON_STRICT`.
- Default value: `false`.
By default, on startup Xray uses a custom JSON parser that strips comments and other non-standard characters from the configuration. If you are sure that your configuration file strictly conforms to the JSON standard (RFC 8259), you can enable this option to use the standard JSON parser, which is faster when working with large configurations.
## Other Available Configurations
- xray.location.plugin
- xray.location.tool
- xray.location.cert
- xray.buf.readv
- xray.buf.splice
- xray.vmess.padding
- xray.ray.buffer.size
- xray.browser.dialer
- xray.xudp.show
- xray.xudp.basekey
These options are open to users with special needs; you can read the source code to discover their usage. ~~PR Welcome~~
`env` is a basic configuration module. The documentation has moved to [Environment Configuration](../env.md).
-1
View File
@@ -5,6 +5,5 @@ Xray has the following features:
- [XTLS Deep Dive](xtls.md)
- [Fallback](fallback.md)
- [Browser Dialer](browser_dialer.md)
- [Environment Variables](env.md)
- [Multiple File Configuration](multiple.md)
- [Reverse Proxy / NAT Traversal](/en/document/level-2/vless_reverse.md)
+1 -1
View File
@@ -61,4 +61,4 @@ The resource download URL. It must be an HTTPS URL.
The resource filename to write, such as `geoip.dat` or `geosite.dat`.
The file is resolved using the [Resource File Path](./features/env.md#resource-file-path). It must be an existing regular file inside the resource directory; absolute paths and paths escaping the resource directory are not supported.
The file is resolved using the [Resource File Path](./env.md#resource-file-path). It must be an existing regular file inside the resource directory; absolute paths and paths escaping the resource directory are not supported.
+7 -2
View File
@@ -13,6 +13,7 @@ The format is as follows:
```json
{
"env": {},
"log": {},
"api": {},
"dns": {},
@@ -170,11 +171,15 @@ List the parts of my question that are not confirmed by the official documentati
## Basic Configuration Modules
> log:[LogObject](./log.md)
> env: [EnvObject](./env.md)
Sets process environment variables after configuration parsing. It can configure Xray runtime options and variables read later by Go or other dependencies.
> log: [LogObject](./log.md)
Log configuration, controls how Xray outputs logs.
> api:[ApiObject](./api.md)
> api: [ApiObject](./api.md)
Provides some API interfaces for remote calls.
+2 -2
View File
@@ -93,7 +93,7 @@ When multiple attributes are specified simultaneously, these attributes must be
- **Full match**: Starts with `"full:"`, the rest is a domain name. The rule takes effect when this domain exactly matches the target domain. For example, "full:xray.com" matches "xray.com" but not "www.xray.com".
- **Dotless domain**: Starts with `"dotless:"`, the rest is a string that cannot contain `.`. The rule takes effect when the domain contains no `.` and this string matches any part of the target domain. For example, "dotless:pc-" matches "pc-alice", "mypc-alice". Suitable for intranet NetBIOS domains, etc. Case sensitive.
- **Predefined domain list**: Starts with `"geosite:"`, the rest is a name, such as `geosite:google` or `geosite:cn`. Refer to [Predefined Domain List](#predefined-domain-list) for names and domain lists.
- **Load domains from file**: In the form of `"ext:file:tag"`. Must start with `ext:` (lowercase), followed by filename and tag. The file is stored in the [Resource Directory](./features/env.md#resource-file-path). The file format is the same as `geosite.dat`, and the tag must exist in the file.
- **Load domains from file**: In the form of `"ext:file:tag"`. Must start with `ext:` (lowercase), followed by filename and tag. The file is stored in the [Resource Directory](./env.md#resource-file-path). The file format is the same as `geosite.dat`, and the tag must exist in the file.
::: tip
`"ext:geoip.dat:cn"` is equivalent to `"geoip:cn"`
@@ -107,7 +107,7 @@ An array, where each item represents an IP range. The rule takes effect when an
- **[CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)**: Like `"10.0.0.0/8"`. You can also use `"0.0.0.0/0"` or `"::/0"` to specify all IPv4 or IPv6.
- **Predefined IP list**: This list is pre-installed in every Xray installation package, named `geoip.dat`. Usage is like `"geoip:cn"`. Must start with `geoip:` (lowercase), followed by a two-character country code. Supports almost all countries with internet access.
- **Special value**: `"geoip:private"`, includes all private addresses, such as `127.0.0.1`.
- **Load IPs from file**: In the form of `"ext:file:tag"`. Must start with `ext:` (lowercase), followed by filename and tag. The file is stored in the [Resource Directory](./features/env.md#resource-file-path). The file format is the same as `geoip.dat`, and the tag must exist in the file.
- **Load IPs from file**: In the form of `"ext:file:tag"`. Must start with `ext:` (lowercase), followed by filename and tag. The file is stored in the [Resource Directory](./env.md#resource-file-path). The file format is the same as `geoip.dat`, and the tag must exist in the file.
- **Inverse selection `!`**: `"!10.0.0.0/8"` means anything not in `10.0.0.0/8`, and `"!geoip:cn"` means results not in `geoip:cn`. Multiple inverse options have an `AND` relationship, while positive options, or positive options together with all inverse options, have an `OR` relationship. For example, `ip: ["!geoip:cn", "!geoip:us", "geoip:telegram"]` matches IPs that are not from the US AND not from China, OR are Telegram IPs.
> `port`: number | string
+2 -2
View File
@@ -110,7 +110,7 @@ xray run -config http+unix:///run/xray-config.sock/config.json
When `-config` is not specified, Xray will attempt to load `config.json` from the following paths in order:
- Working Directory
- The path specified by `Xray.location.asset` in [Environment Variables](../config/features/env.md#resource-file-path)
- The path specified by `Xray.location.asset` in [Environment Variables](../config/env.md#resource-file-path)
:::
```bash
@@ -255,7 +255,7 @@ xray wg [-i "(base64.StdEncoding)"]
When `-config` is not specified, Xray will attempt to load `config.json` from the following paths in order:
- Working Directory
- The path specified by `Xray.location.asset` in [Environment Variables](../config/features/env.md#resource-file-path)
- The path specified by `Xray.location.asset` in [Environment Variables](../config/env.md#resource-file-path)
:::
### xray mldsa65
+1
View File
@@ -87,6 +87,7 @@ Two different styles of Docker images are currently provided:
- 09_metrics.json
- 10_observatory.json
- 11_geodata.json
- 12_env.json
- 99_version.json
- `/usr/local/share/xray/`: Resource file directory containing Loyalsoldier geolocation data files (owner: `65532:65532`, directory permissions: `755`, file permissions: `644`)
- geoip.dat
+93
View File
@@ -0,0 +1,93 @@
# Конфигурация среды
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. `XRAY_LOCATION_CONFIG`, `XRAY_LOCATION_CONFDIR` и `XRAY_JSON_STRICT` в корневом `env` не влияют на текущую загрузку конфигурации.
- При объединении нескольких файлов одинаковый ключ из более позднего файла переопределяет предыдущее значение.
- Пустая строка задаёт переменной окружения пустое значение, но не удаляет её.
- Корневой `env` изменяет окружение всего процесса. Изоляция между экземплярами отсутствует, а прежние значения не восстанавливаются автоматически при ошибке построения конфигурации или остановке экземпляра.
## Переменные этапа загрузки конфигурации
Следующие три переменные должны быть заданы в окружении процесса до чтения конфигурации Xray. Их нельзя задать через корневой объект `env` текущей конфигурации.
### Расположение файла конфигурации
- Имя: `XRAY_LOCATION_CONFIG`.
- Значение по умолчанию: каталог исполняемого файла Xray.
Эта переменная задаёт каталог, содержащий `config.json`.
### Каталог нескольких конфигураций
- Имя: `XRAY_LOCATION_CONFDIR`.
- Значение по умолчанию: `""`.
Файлы `.json` из этого каталога читаются в порядке их имён. Аргумент командной строки `confdir` имеет более высокий приоритет.
### Строгий JSON-парсер
- Имя: `XRAY_JSON_STRICT`.
- Значение по умолчанию: `false`.
По умолчанию Xray использует собственный JSON-парсер, удаляющий комментарии и другие нестандартные символы. Если конфигурация строго соответствует JSON (RFC 8259), этот параметр включает стандартный парсер и может ускорить обработку очень больших файлов конфигурации.
## Переменные путей ресурсов
Следующие две переменные можно задать через окружение процесса или корневой объект `env`.
### Путь к файлам ресурсов
- Имя: `XRAY_LOCATION_ASSET`.
- Значение по умолчанию: определённые каталоги [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) или каталог исполняемого файла Xray.
Эта переменная задаёт каталог ресурсов, обычно содержащий `geoip.dat` и `geosite.dat`. Если она не задана, Xray ищет файлы в следующем порядке:
```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`
Эти параметры предназначены для пользователей с особыми требованиями. Их точное поведение описано в исходном коде.
+2 -56
View File
@@ -1,57 +1,3 @@
# Переменные среды
# Конфигурация среды перемещена
Xray предоставляет следующие переменные среды для изменения некоторых базовых настроек Xray.
## Путь к файлам ресурсов
- Название: `xray.location.asset` или `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_LOCATION_CONFIG`.
- Значение по умолчанию: Тот же каталог, что и файл Xray.
Эта переменная среды указывает расположение папки, которая должна содержать файл `config.json`.
## Каталог с несколькими конфигурациями
- Название: `xray.location.confdir` или `XRAY_LOCATION_CONFDIR`.
- Значение по умолчанию: `""`.
Файлы `.json` в этом каталоге будут читаться в порядке имен файлов как параметры конфигурации.
Этот параметр имеет более низкий приоритет, чем аргумент запуска `confdir`.
## Строгий JSON-парсер
- Название: `xray.json.strict` или `XRAY_JSON_STRICT`.
- Значение по умолчанию: `false`.
По умолчанию Xray при изначальном запуске использует кастомный JSON-парсер (который вырезает из конфигурации комментарии и прочие нестандартные символы). Если вы уверены, что ваш конфигурационный файл строго соответствует JSON-стандарту (RFC8259), вы можете включить этот параметр, чтобы использовать стандартный JSON-парсер, который при больших конфигурациях будет работать быстрее.
## Другие доступные конфигурации
- xray.location.plugin
- xray.location.tool
- xray.location.cert
- xray.buf.readv
- xray.buf.splice
- xray.vmess.padding
- xray.ray.buffer.size
- xray.browser.dialer
- xray.xudp.show
- xray.xudp.basekey
Эти параметры предназначены для пользователей с особыми потребностями; вы можете изучить исходный код, чтобы узнать их назначение. ~~PR Welcome~~
`env` является основным модулем конфигурации. Документация перемещена в раздел [Конфигурация среды](../env.md).
-1
View File
@@ -5,6 +5,5 @@ Xray предлагает следующие функции:
- [Глубокий анализ XTLS](xtls.md)
- [Fallback](fallback.md)
- [Browser Dialer](browser_dialer.md)
- [Переменные окружения](env.md)
- [Конфигурация из нескольких файлов](multiple.md)
- [Обратный прокси / NAT Traversal](/ru/document/level-2/vless_reverse.md)
+1 -1
View File
@@ -61,4 +61,4 @@ URL для загрузки ресурса. Должен быть HTTPS URL.
Имя файла ресурса для записи, например `geoip.dat` или `geosite.dat`.
Файл разрешается через [путь к файлам ресурсов](./features/env.md#путь-к-файлам-ресурсов). Это должен быть уже существующий обычный файл внутри каталога ресурсов; абсолютные пути и пути с выходом за пределы каталога ресурсов не поддерживаются.
Файл разрешается через [путь к файлам ресурсов](./env.md#путь-к-файлам-ресурсов). Это должен быть уже существующий обычный файл внутри каталога ресурсов; абсолютные пути и пути с выходом за пределы каталога ресурсов не поддерживаются.
+5
View File
@@ -13,6 +13,7 @@
```json
{
"env": {},
"log": {},
"api": {},
"dns": {},
@@ -168,6 +169,10 @@ https://xtls.github.io/llms-full.txt
## Основные модули конфигурации
> env: [EnvObject](./env.md)
Задаёт переменные окружения процесса после разбора конфигурации. Может настраивать runtime-параметры Xray и переменные, которые Go или другие зависимости читают позднее.
> log: [LogObject](./log.md)
Настройка журнала, управляющая способом вывода журналов Xray.
+2 -2
View File
@@ -93,7 +93,7 @@
- **Полное совпадение**: Начинается с `"full:"`, остальная часть — доменное имя. Правило вступает в силу, когда это имя полностью совпадает с целевым доменом. Например, `"full:xray.com"` соответствует `"xray.com"`, но не `"www.xray.com"`.
- **Домен без точек**: Начинается с `"dotless:"`, остальная часть — строка, не содержащая `.`. Правило вступает в силу, если домен не содержит `.` и эта строка совпадает с любой частью целевого домена. Например, `"dotless:pc-"` соответствует `"pc-alice"`, `"mypc-alice"`; подходит для доменов NetBIOS во внутренней сети и т. д. Чувствительно к регистру.
- **Предопределенный список доменов**: Начинается с `"geosite:"`, далее следует имя, например `geosite:google` или `geosite:cn`. Список имен и доменов см. в разделе [Предопределенные списки доменов](#предопределенные-списки-доменов).
- **Загрузка доменов из файла**: В формате `"ext:file:tag"`. Должно начинаться с `ext:` (в нижнем регистре), далее следует имя файла и тег. Файл должен находиться в [директории ресурсов](./features/env.md). Формат файла совпадает с форматом `geosite.dat`, указанный тег должен присутствовать в файле.
- **Загрузка доменов из файла**: В формате `"ext:file:tag"`. Должно начинаться с `ext:` (в нижнем регистре), далее следует имя файла и тег. Файл должен находиться в [директории ресурсов](./env.md). Формат файла совпадает с форматом `geosite.dat`, указанный тег должен присутствовать в файле.
::: tip
`"ext:geoip.dat:cn"` эквивалентно `"geoip:cn"`
@@ -107,7 +107,7 @@
- [CIDR](https://ru.wikipedia.org/wiki/Бесклассовая_междоменная_маршрутизация): например, `"10.0.0.0/8"`, также можно использовать `"0.0.0.0/0"` `"::/0"` для указания всех IPv4- или IPv6-адресов.
- Предопределенный список IP-адресов: этот список встроен в каждый установочный пакет Xray, имя файла - `geoip.dat`. Формат использования: `"geoip:код_страны"`, должно начинаться с `geoip:` (в нижнем регистре), за которым следует двухбуквенный код страны, поддерживаются почти все страны с доступом в Интернет.
- Специальное значение: `"geoip:private"`, включает в себя все частные адреса, например, `127.0.0.1`.
- Загрузка IP-адресов из файла: имеет вид `"ext:файл:тег"`, должно начинаться с `ext:` (в нижнем регистре), за которым следует имя файла и тег, файл хранится в [каталоге ресурсов](./features/env.md#путь-к-файлу-ресурсов), формат файла такой же, как у `geoip.dat`, тег должен существовать в файле.
- Загрузка IP-адресов из файла: имеет вид `"ext:файл:тег"`, должно начинаться с `ext:` (в нижнем регистре), за которым следует имя файла и тег, файл хранится в [каталоге ресурсов](./env.md#путь-к-файлу-ресурсов), формат файла такой же, как у `geoip.dat`, тег должен существовать в файле.
- Функция инверсии `!`: `"!10.0.0.0/8"` обозначает всё, что не входит в `10.0.0.0/8`, а `"!geoip:cn"` — результаты, не входящие в `geoip:cn`. Несколько условий с отрицанием объединяются логическим **AND**, а положительные условия и совокупность всех отрицательных условий — логическим **OR**. Например, `ip: ["!geoip:cn", "!geoip:us", "geoip:telegram"]` соответствует IP, которые не относятся к США **И** не относятся к Китаю, **ИЛИ** являются IP Telegram.
> `port`: number | string
+2 -2
View File
@@ -111,7 +111,7 @@ xray run -config http+unix:///run/xray-config.sock/config.json
Когда `-config` не указан, Xray последовательно попытается загрузить `config.json` из следующих путей:
- Рабочий каталог (Working Directory)
- Путь, указанный в переменной окружения `Xray.location.asset` в [переменных окружения](../config/features/env.md#Путь-к-файлам-ресурсов)
- Путь, указанный в переменной окружения `Xray.location.asset` в [переменных окружения](../config/env.md#Путь-к-файлам-ресурсов)
:::
```bash
@@ -256,7 +256,7 @@ xray wg [-i "(base64.StdEncoding)"]
Если `-config` не указан, Xray попытается загрузить `config.json` из следующих мест:
- Рабочий каталог (Working Directory);
- Путь, указанный в переменной окружения `Xray.location.asset` (см. [Переменные окружения](../config/features/env.md#ресурсные-файлы)).
- Путь, указанный в переменной окружения `Xray.location.asset` (см. [Переменные окружения](../config/env.md#ресурсные-файлы)).
:::
### xray mldsa65
+1
View File
@@ -87,6 +87,7 @@ Xray предоставляет два способа проверки:
- 09_metrics.json
- 10_observatory.json
- 11_geodata.json
- 12_env.json
- 99_version.json
- `/usr/local/share/xray/`: каталог файлов ресурсов с геоданными Loyalsoldier (владелец: `65532:65532`, права на каталог: `755`, права на файлы: `644`)
- geoip.dat