Конфигурация среды
Xray может настраивать среду выполнения через корневой объект env или переменные окружения процесса.
env в файле конфигурации
В корне файла конфигурации можно указать объект env:
{
"env": {
"XRAY_LOCATION_ASSET": "/usr/local/share/xray",
"XRAY_LOCATION_CERT": "/usr/local/share/xray",
"XRAY_RAY_BUFFER_SIZE": "0"
}
}2
3
4
5
6
7
Каждый ключ и значение из 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 или каталог исполняемого файла Xray.
Эта переменная задаёт каталог ресурсов, обычно содержащий geoip.dat и geosite.dat. Если она не задана, Xray ищет файлы в следующем порядке:
./
/usr/local/share/xray
/usr/share/xray2
3
Путь к файлам сертификатов
- Имя:
XRAY_LOCATION_CERT. - Значение по умолчанию: каталог исполняемого файла Xray.
Эта переменная задаёт базовый каталог для относительных путей к файлам сертификатов.
Другие переменные среды выполнения
Следующие переменные также можно задать через окружение процесса или корневой объект env:
XRAY_BUF_READVXRAY_BUF_SPLICEXRAY_VMESS_PADDINGXRAY_CONE_DISABLEDXRAY_RAY_BUFFER_SIZEXRAY_BROWSER_DIALERXRAY_XUDP_SHOWXRAY_XUDP_BASEKEYXRAY_TUN_FD
Эти параметры предназначены для пользователей с особыми требованиями. Их точное поведение описано в исходном коде.