What is a Minecraft Proxy? The Definitive Technical Guide
When most developers hear the term "proxy," they immediately think of HTTP proxies rotating IP addresses for web scraping. However, in the Minecraft ecosystem, a proxy serves a much more architectural and functional role. A Minecraft Proxy is a server that acts as a gateway, translator, or manager for Minecraft connections.
This guide covers the technical differences between server-side networking proxies (BungeeCord/Velocity) and specific utility proxies like Geyser, along with how to implement them in your infrastructure.
---
1. The Two Definitions of "Minecraft Proxy"
It is crucial to distinguish between the two main ways this term is used, as they serve completely different technical purposes.
A. The Networking Proxy (Reverse Proxy)
This is the most common meaning in server administration. It acts as a Reverse Proxy.
- Technical Role: It listens on a specific TCP port (default 25565) for incoming client connections using the Minecraft Handshake Protocol. Once a client connects, the proxy authenticates them (via Mojang/Microsoft sessions) and then forwards that connection to a backend server (like Spigot, Paper, or Fabric) running on a different port (e.g., localhost:25566).
- Software: The industry standards are Velocity (modern, high-performance, Java-based) and BungeeCord (legacy, widely supported).
- Use Case: Creating a "Network" of servers (Lobby, Survival, Skyblock) under one IP address.
- Technical Role: The Geyser proxy sits between a *Minecraft: Bedrock Edition* client and a *Minecraft: Java Edition* server. It translates Bedrock packets into Java packets and vice-versa. To the Java server, the Bedrock player looks exactly like a Java client.
- Use Case: Allowing mobile (iOS/Android) and console players to join PC servers.
- Example: You can run multiple backend "Survival" servers on different physical machines. The proxy can intelligently send Player A to Survival-Server-1 and Player B to Survival-Server-2 to distribute the CPU load.
B. The Translation Proxy (Geyser)
This refers to a proxy that translates data between two different protocols.
---
2. Why Use a Minecraft Proxy? (Technical Benefits)
Using software like Velocity or Nginx (for TCP forwarding) provides significant infrastructure advantages.
A. Single IP Entry Point
Without a proxy, you would need to give players different IP addresses and ports for every server (e.g., play.myserver.com:25565 for lobby and play.myserver.com:25566 for survival). This is bad User Experience (UX). A proxy allows all players to connect via play.myserver.com, and the proxy routes them internally based on server logic or portals.
B. Load Balancing and Scalability
Proxies allow you to separate the "front-end" connection handling from the "back-end" game logic.
C. Cross-Version and Cross-Platform Support
A proxy can handle protocol version differences. For example, a player on version 1.20.4 might connect to the proxy, which translates packets so they can play on a server running 1.20.1. Similarly, Geyser acts as a bridge for the vastly different Bedrock protocol.
---
3. Comparison: BungeeCord vs. Velocity
If you are setting up a Minecraft proxy in 2025, you should not be using BungeeCord unless you have legacy plugins that require it. Velocity is the modern successor.
| Feature | BungeeCord | Velocity (Recommended) | | :--- | :--- | :--- | | Performance | Moderate; suffers with high player counts due to legacy threading. | High; optimized with Netty and asynchronous coding for better throughput. | | Security | Vulnerable to certain bot attacks and player data leaks in older versions. | Built-in modern encryption, packet limiter, and login security. | | Compatibility | Supports very old Minecraft versions. | Supports modern versions (1.13+). | | Packet Handling | Can block/modify packets. | Faster packet processing with better memory efficiency. |
---
4. Technical Implementation: Setting Up a Proxy
Setting up a proxy requires editing configuration files (config.yml) and ensuring your firewall routes traffic correctly.
Scenario: Connecting a Proxy to a Backend Server
In this standard setup, the Proxy listens on port 25565, and the Backend Server listens on port 25566 (localhost).
Step 1: Configure the Backend (Spigot/Paper)
You must prevent players from connecting directly to the backend server. Otherwise, they will bypass the proxy, causing issues with plugins and UUIDs.
In spigot.yml or paper.yml:
settings:
bungeecord: true # Tells the server to trust the proxy for IP information
*Note: If you are using Velocity in modern setups, you set velocity-support: true in paper.yml and generate a forwarding secret.*
Step 2: Configure the Proxy (Velocity)
In your velocity.toml config file:
[bind]
The address the proxy will listen for connections on
bind = "0.0.0.0:25565"
[servers]
Define your backend servers here
lobby = "127.0.0.1:25566" survival = "127.0.0.1:25567"
[try]
Which server to send players to when they first join
connect-order = ["lobby"]
Scenario: Using Nginx as a TCP Proxy
Some admins use Nginx to proxy TCP traffic to hide the backend server's IP or handle SSL (if using a custom launcher).
*Note: Standard Nginx is for HTTP. Minecraft is TCP. You need stream module support.*
Nginx Configuration (nginx.conf):
stream {
upstream minecraft_backend { server 127.0.0.1:25566; # You can add multiple servers here for load balancing }
server { listen 25565; proxy_pass minecraft_backend;
# Required for Minecraft keep-alive proxy_timeout 3600s; proxy_connect_timeout 3600s; } }
---
5. Specialized Use Cases
The Geyser Proxy
Geyser is technically a standalone proxy. You can run it as a plugin (on your server) or as a standalone proxy (standalone program).
Client-Side Tunneling Proxies
Sometimes "Minecraft Proxy" refers to a client-side tool used to play behind a restrictive firewall (e.g., at school or work).
minecraft.net or the server IP.---
6. Security Considerations
When operating a proxy, you open yourself to new attack vectors.
1. Bot Attacks: Since proxies handle the initial handshake, they are the first line of defense against bot login attacks. Velocity handles this better than BungeeCord, but you should install a plugin like FastLogin or utilize rate-limiting. 2. IP Forwarding: If bungeecord: true is set in Spigot, the server "trusts" the proxy. If a malicious user manages to connect directly to the backend server, they can spoof their UUID and pretend to be the server admin. Ensure your backend server is firewalled (via iptables or Windows Firewall) so it *only* accepts connections from localhost (the proxy).
---
7. Conclusion
A Minecraft proxy is the backbone of any professional server network. Whether you are using Velocity to manage thousands of players across mini-games, or Geyser to expand your player base to mobile devices, understanding how traffic flows between the proxy and the backend is essential for server administration.