PROXY protocol
Forward real player IPs from Infinity-Filter to your backend via the PROXY protocol.
The PROXY protocol is the recommended way to forward the real player IP from Infinity-Filter to your backend. It wraps each connection with a small header containing the original client’s IP and port, so your proxy software can attribute connections to the right player — not to the Infinity-Filter edge.
Why you need real-IP forwarding
Without it, every player connection arrives at your backend with the edge IP as the source. Symptoms:
- Per-IP rate limits, bans and antibot plugins target the edge IP instead of the player.
- LiteBans-style plugins can mass-ban the edge — and lock everyone out.
- Geolocation and analytics on the backend become meaningless.
With it, the backend sees the real player IP as if Infinity-Filter wasn’t there.
How to enable it
PROXY protocol must be enabled in two places in lockstep.
1. On the Backends page
Open Network → Backends. On the right-hand panel, toggle PROXY protocol on.
When enabled, the panel shows an alert reminding you to remove the Infinity-Filter plugin if it was installed.
2. In your proxy software
Modern Minecraft proxy software accepts the PROXY protocol header natively — you just flip a config flag. Pick the tab that matches your setup:
Velocity supports inbound PROXY protocol natively via the [advanced] section of velocity.toml. Add or set:
[advanced]
# Accept the PROXY protocol header from Infinity-Filter.
haproxy-protocol = true
Restart Velocity. The flag is documented in PaperMC’s Velocity reference.
BungeeCord supports inbound PROXY protocol natively per-listener. In config.yml, set proxy_protocol: true on the listener facing Infinity-Filter:
listeners:
- host: 0.0.0.0:25577
proxy_protocol: true
# … your other listener options …
Restart BungeeCord.
Paper (including Purpur and other Paper forks) supports inbound PROXY protocol natively — use it when your players hit Paper directly through Infinity-Filter, without a Velocity/BungeeCord proxy in front.
In paper-global.yml:
proxies:
proxy-protocol: true
Restart Paper. The option is documented in PaperMC’s global configuration reference.
Vanilla Spigot (without Paper) does not support PROXY protocol. The two clean options:
- Upgrade to Paper (drop-in replacement for Spigot) and use the Paper tab above. Recommended.
- Use the Infinity-Filter forwarding plugin instead of PROXY protocol — it works on any Spigot/Bukkit-compatible server. Make sure the PROXY protocol toggle in the panel is off in that case.
A Velocity/BungeeCord proxy in front of Spigot also works — the proxy accepts PROXY protocol from Infinity-Filter, and forwards player info to Spigot via its own native mechanism (BungeeCord guard or Velocity Modern forwarding).
Symptoms when it’s misconfigured
All players show the same IP on the backend PROXY protocol is off (or the plugin is missing). Enable PROXY protocol on both the Backends page and in Velocity/BungeeCord.
Connection drops at handshake PROXY protocol is enabled on only one side. Both sides must agree.
Double-wrap errors / weird disconnects Both PROXY protocol and the Infinity-Filter plugin are enabled. Remove one.
LiteBans mass-bans the proxy IP Real IPs aren't forwarded — admins ban the abuser who is actually the edge. Enable PROXY protocol and remove past mass-bans.
Backend timeouts during high traffic Check compression-threshold parity: Velocity in front set to 256 with the backend set to -1 is destabilising under load.
Bedrock and PROXY protocol
The Bedrock side has its own layered PROXY protocol setup. Three knobs interact, and getting them wrong is a common source of “Bedrock silently doesn’t work”. The short version:
| Layer | Setting with IF |
|---|---|
| IF Backends page → PROXY protocol | On (if you want real IPs end-to-end) |
Geyser → bedrock.enable-proxy-protocol | false (this is for an upstream UDP proxy directly in front of Geyser — IF isn’t one) |
Geyser → remote.use-proxy-protocol | true (forwards real IPs from Geyser to the Java backend) |
Geyser → advanced.bedrock.use-haproxy-protocol | true only if end-to-end real IP is required |
Geyser → advanced.java.use-haproxy-protocol | true only if end-to-end real IP is required |
Geyser → haproxy-protocol-whitelisted-ips | Required when the previous flag is true — list the IF ranges |
See the full table in Geyser integration.
Compression-threshold parity
Independent of PROXY protocol but often confused with it: Velocity and the backend Spigot/Paper must use the same network-compression-threshold value.
A Velocity proxy at 256 in front of a Spigot at -1 is destabilising at high player counts and causes timeout kicks. Keep them equal on both sides.
Switching from the plugin to PROXY protocol
If you currently use the Infinity-Filter plugin and want to switch:
- Toggle PROXY protocol on in the panel.
- Enable
haproxy-protocol = trueinvelocity.toml(or equivalent). - Remove the Infinity-Filter plugin JAR from your backend’s
plugins/folder. - Restart the proxy.
The two cannot coexist — keeping the plugin installed after enabling PROXY protocol will double-wrap connections.
What’s next
Last updated: May 29, 2026