A proxy chain makes one outbound send its traffic through another outbound instead of straight out. In Xray this is done with proxySettings on an outbound; the relationship between the two hops lives in the config and no extra software is involved.

When it is worth doing

Two common reasons. First, when the route from your ISP to the exit server takes a bad detour, sending traffic through a relay with a good path first can cut latency noticeably. Second, when you need a stable exit IP — some streaming services only accept certain regions and dislike addresses that keep changing, so you can rotate the relay while the exit stays put.

SponsoredWhere does the subscription link come from?Our partner provider gives you 1 GB of high-speed Hong Kong data at signup — import it in one click.Get high-speed nodes

The skeleton

Define two outbounds, give each a tag, and make the exit one send through the relay:

"outbounds": [
  { "tag": "landing", "protocol": "vless",
    "settings": { },
    "proxySettings": { "tag": "relay" } },
  { "tag": "relay", "protocol": "vmess",
    "settings": { } }
]

The first element of the array is the default outbound, so here traffic goes to landing by default, and landing's packets get wrapped by relay before leaving. Each outbound's settings block carries its own server address, port and UUID as usual.

What it costs

  • Latency is the sum of both hops. A badly chosen relay makes things slower, so measure each leg separately before chaining them.
  • Mux on both hops compounds the queueing effect noticeably. Turn it off on at least one side.
  • Throughput is capped by the narrower hop; a relay on a thin pipe becomes the bottleneck.

Doing this in v2rayN

The graphical fields cannot express this structure, so you import a complete json through the custom configuration option. Before writing one, read through the config.json structure, particularly how outbounds and tags relate.