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:391. 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.RawMessageDeprecatedKept only to surface a friendly error if a legacy config carries it.

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:391-412 · v26.7.28 (5ca6f4b)

Core Tutorial by Argsment