3.9 KiB
Local Policy
Local policy can be used to set different policy settings for different user levels, such as connection timeout settings. Each connection handled by Xray corresponds to a user, and different policies are applied based on the user's level.
PolicyObject
PolicyObject corresponds to the policy field in the configuration file.
{
"policy": {
"levels": {
"0": {
"handshake": 4,
"connIdle": 300,
"uplinkOnly": 2,
"downlinkOnly": 5,
"statsUserUplink": false,
"statsUserDownlink": false,
"bufferSize": 4
}
},
"system": {
"statsInboundUplink": false,
"statsInboundDownlink": false,
"statsOutboundUplink": false,
"statsOutboundDownlink": false
}
}
}
level: map{string: LevelPolicyObject}
A set of key-value pairs, where each key is a string representation of a number (as required by JSON), such as "0", "1", etc., with the number corresponding to the user level. Each value is a LevelPolicyObject.
::: tip Each inbound and outbound proxy can now set the user level, and Xray will apply different local policies based on the actual user level. :::
system: SystemPolicyObject
Xray system-level policy.
LevelPolicyObject
{
"handshake": 4,
"connIdle": 300,
"uplinkOnly": 2,
"downlinkOnly": 5,
"statsUserUplink": false,
"statsUserDownlink": false,
"bufferSize": 10240
}
handshake: number
The time limit for handshake during connection establishment. Unit: seconds. Default: 4. When processing a new inbound connection, if the time used in the handshake phase exceeds this limit, the connection will be aborted.
connIdle: number
The time limit for connection idle time. Unit: seconds. Default: 300. When processing an inbound/outbound connection, if no data is transferred (including upstream and downstream data) within connIdle time, the connection will be aborted.
uplinkOnly: number
The time limit after the downstream connection is closed. Unit: seconds. Default: 2. When the server (such as a remote website) closes the downstream connection, the outbound proxy will abort the connection after waiting for uplinkOnly time.
downlinkOnly: number
The time limit after the upstream connection is closed. Unit: seconds. Default: 5. When the client (such as a browser) closes the upstream connection, the inbound proxy will abort the connection after waiting for downlinkOnly time.
::: tip
In the scenario of HTTP browsing, you can set uplinkOnly and downlinkOnly to 0 to improve the efficiency of connection closing.
:::
statsUserUplink: true | false
When set to true, enables upstream traffic statistics for all users at the current level.
statsUserDownlink: true | false
When set to true, enables downstream traffic statistics for all users at the current level.
bufferSize: number
The internal buffer size of each connection. Unit: kB. When set to 0, the internal buffer is disabled.
Default values:
- On ARM, MIPS, and MIPSLE platforms, the default value is
0. - On ARM64, MIPS64, and MIPS64LE platforms, the default value is
4. - On other platforms, the default value is
512.
SystemPolicyObject
{
"statsInboundUplink": false,
"statsInboundDownlink": false,
"statsOutboundUplink": false,
"statsOutboundDownlink": false
}
statsInboundUplink: true | false
When set to true, enables upstream traffic statistics for all inbound proxies.
statsInboundDownlink: true | false
When set to true, enables downstream traffic statistics for all inbound proxies.
statsOutboundUplink: true | false
When set to true, enables upstream traffic statistics for all outbound proxies.
statsOutboundDownlink: true | false
When set to true, enables downstream traffic statistics for all outbound proxies.