Skip to content

Xray-core — Config Layout ​

Xray-core reads a single JSON document at startup. The root object maps directly to Go struct Config at infra/conf/xray.go:388. Every top-level field below corresponds to one JSON key.

Root keys ​

KeyGo fieldTypePageDescription
envEnvEnvConfig (map[string]string)—Environment variables applied via os.Setenv before the rest of the config is built. Merged across multi-file configs (later files override same keys).
logLogConfigLogConfigLogAccess and error log streams, level, DNS-query logging, IP masking.
dnsDNSConfigDNSConfigDNSDNS resolver, server list, query strategy, fakedns linkage.
routingRouterConfigRouterConfigRoutingDomain strategy, rules, balancers.
inboundsInboundConfigs[]InboundDetourConfigInboundsList of listening services.
outboundsOutboundConfigs[]OutboundDetourConfigOutboundsList of upstream proxy targets.
policyPolicyPolicyConfigPolicyPer-level timeouts, buffer size, user-stats toggles, system-stats toggles.
apiAPIAPIConfigAPIgRPC management API inbound (tag + listen + service list).
statsStatsStatsConfigStatsEmpty struct; presence enables the stats subsystem.
metricsMetricsMetricsConfigMetricsPrometheus exporter (tag + listen).
reverseReverseReverseConfigReverseReverse-proxy bridges and portals.
fakeDnsFakeDNSFakeDNSConfigFakeDNSFake-IP pool config (single object or array).
observatoryObservatoryObservatoryConfigObservatoryOutbound latency probing.
burstObservatoryBurstObservatoryBurstObservatoryConfigBurst ObservatoryConcurrent latency probing with health-check tuning.
versionVersionVersionConfigVersionOptional min/max version requirement.
transportTransportmap[string]json.RawMessageDeprecatedNot used; present only so a config that sets it gets an explanatory error.

At a glance ​

json
{
  "log": { "loglevel": "warning" },
  "dns": {},
  "routing": { "rules": [] },
  "inbounds": [],
  "outbounds": [],
  "policy": { "levels": { "0": { "handshake": 4 } } },
  "api": { "tag": "api", "listen": "127.0.0.1:10085", "services": ["HandlerService", "StatsService"] },
  "stats": {},
  "metrics": { "tag": "metrics", "listen": "127.0.0.1:9099" }
}

Source: infra/conf/xray.go:388-409 · v26.9.9 (52a412d)

Core Tutorial by Argsment