Files

141 lines
7.2 KiB
Markdown

# Переменные окружения
Переменные окружения используются для изменения некоторых низкоуровневых настроек Xray.
Переменные окружения могут быть записаны в окружение текущего процесса Xray из раздела `env` после чтения конфигурации либо переданы через командную оболочку или диспетчер служб до запуска Xray.
## EnvObject
`EnvObject` соответствует разделу `env` в файле конфигурации и представляет собой набор имён и значений переменных окружения.
```json
{
"env": {
"XRAY_LOCATION_ASSET": "/usr/local/share/xray",
"XRAY_BUF_READV": "true",
"XRAY_RAY_BUFFER_SIZE": "2",
"GODEBUG": "gctrace=1,schedtrace=1000,scheddetail=1"
// ...
}
}
```
> `имя переменной окружения`: string
Имя и значение каждой переменной окружения должны быть строками. После чтения и объединения всех файлов конфигурации Xray записывает элементы `env` в окружение текущего процесса перед созданием модулей.
::: tip
При использовании [нескольких файлов конфигурации](./features/multiple.md) их разделы `env` объединяются по ключам. Одинаковый ключ из более позднего файла заменяет предыдущее значение.
Раздел `env` задаёт имя именно в записанном виде и заменяет существующую переменную процесса с точно таким же именем.
:::
::: warning
Раздел `env` применяется только после того, как файлы конфигурации были найдены, прочитаны и объединены. Некоторые переменные окружения необходимо задать через командную оболочку или диспетчер служб до запуска Xray, например:
- `XRAY_JSON_STRICT`
- `XRAY_LOCATION_CONFIG`
- `XRAY_LOCATION_CONFDIR`
- `GOGC`
- `GOMEMLIMIT`
- `GOMAXPROCS`
- `GOTRACEBACK`
:::
## Настройка переменных окружения перед запуском Xray
В следующих примерах командная оболочка или диспетчер служб используются для настройки пути к файлам ресурсов и строгого анализатора JSON:
::: code-group
```bash [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]
# Задать переменные в разделе [Service] службы Xray
[Service]
Environment="XRAY_LOCATION_ASSET=/usr/local/share/xray"
Environment="XRAY_JSON_STRICT=true"
```
:::
## Встроенные переменные 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), этот параметр позволяет использовать стандартный анализатор, способный быстрее обрабатывать очень большие конфигурации.
Запись в разделе `env` файла конфигурации не действует, поскольку Xray должен выбрать анализатор JSON до чтения этого раздела.
### Путь к файлам ресурсов
- Имя: `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_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`
Эти параметры предназначены для специализированных сценариев. Их точное назначение можно узнать из исходного кода.