Reverse Proxy
Reverse proxy websites are used to forward external requests to backend services, commonly used for deploying Node.js, Go, Java, Python, and other applications.
How It Works
User Request -> Nginx (Reverse Proxy) -> Backend Application (e.g., localhost:3000)Nginx receives HTTP/HTTPS requests from users and forwards them to the specified backend address.
Create Reverse Proxy Website
- Go to the Website page
- Make sure the Reverse Proxy tab is selected
- Click Create Website
Configuration Items
- Name: Website identifier, e.g.,
myapp - Domain: Bound domain, e.g.,
app.example.com - Port: Listening port, default 80
- Proxy Target: Backend service address, e.g.,
http://127.0.0.1:3000 - Remarks: Optional remarks
Proxy Target Format
http://127.0.0.1:3000 # Local service
http://localhost:8080 # Local service
http://172.18.0.2:80 # Docker container
https://backend.internal # Internal HTTPS serviceEdit Reverse Proxy Website
Click the Edit button in the website list to enter the edit page.
Domain and Listen
Configure the website's domain and listening port, supporting multiple domains and ports.

- Domain: Multiple domains can be added
- Listen Address: Multiple ports can be configured, supporting HTTPS and QUIC(HTTP3)
Upstream Configuration
Upstream defines backend server addresses, supporting multiple backends for load balancing.

- Upstream Name: Identifier name for the upstream
- Load Balancing Algorithm: Supports round-robin (default), IP Hash, and other algorithms
- Keep-Alive Connections: Number of persistent connections to maintain with the backend
- DNS Resolver: Custom DNS resolver
Click the Add Server button to add backend servers:

- Server Address: Backend server address, e.g.,
127.0.0.1:8080 - Options: Optional parameters, e.g.,
weight=5(weight),backup(backup server), etc.
Proxy Configuration
Configure proxy behavior and request header forwarding.

- Match Type: Match type, such as prefix match, regex match, etc.
- Match Expression: URL expression to match
- Proxy Target: Enter upstream name or directly enter backend address
- Enable Cache: Whether to enable proxy cache
- Enable Buffer: Whether to enable buffer, AI applications are recommended to disable otherwise it may affect streaming output
- Proxy SNI: Whether to enable SNI (only valid for HTTPS proxy)
- Custom Request Headers: Add or modify request headers passed to the backend
- Response Content Replacement: Can replace strings in response content
Use Cases
Node.js Application
# Start Node.js application
node app.js # Listening on port 3000Proxy Target: http://127.0.0.1:3000
Docker Container
If the backend is a Docker container, you can use the container's IP address or container name (within the same network).
Proxy Target: http://container-name:port or http://container-IP:port
Multiple Backends (Load Balancing)
Add multiple backend addresses in the upstream configuration to achieve load balancing.
Proxy Target: http://upstream-name
Common Configurations
WebSocket Support
Reverse proxy supports WebSocket by default, no additional configuration needed.
Forwarding Real IP
AcePanel automatically configures the following request headers to pass the user's real IP to the backend:
X-Real-IPX-Forwarded-ForX-Forwarded-Proto
Custom Configuration
You can edit Nginx configuration in the website management page to add custom configurations:
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_buffer_size 64k;
proxy_buffers 4 64k;Notes
- Ensure the backend service is started and listening on the specified port
- If the backend is a Docker container, ensure the port is correctly mapped or use Docker network
- When the backend service crashes, Nginx will return a 502 error
