If you run traffic, the setup is familiar: cheap VPS ($2–10) hold the domains and work purely as nginx proxies, while the heavy content, landers and tracker live on one high-performance backend. That way the real server never shows, domains are split across different IPs, and junk traffic and abuse hit the cheap node instead of the origin.
Why the reverse-proxy setup
- Different IPs per domain. Ad networks ban domains that share one address — proxy nodes give each pool of domains its own IP.
- Hidden backend. The real content server is visible only to the proxy; the outside world sees just the node IP.
- Load and abuse on the cheap node. DDoS and complaints hit the proxy, while the origin stays out of it.
- Content in one place. Update the backend once and every node instantly serves the new version.
- Cheap to start. A pool of low-cost VPS instead of an expensive server per domain.
How it works on nginx
The domain resolves to a proxy VPS. On the node, nginx accepts the request and forwards it via proxy_pass to an upstream — your powerful backend. The real visitor IP is passed in headers (X-Real-IP / X-Forwarded-For) so the backend and tracker see the genuine address, and you can enable gzip and cache on the proxy. In its minimal form it looks like this:
upstream backend { server 10.0.0.5:443; }
server {
listen 443 ssl;
server_name lander.example;
location / {
proxy_pass https://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Where the manual setup hurts
On one or two nodes it's simple. The pain starts when you have hundreds of domains across dozens of nodes — that's where hand-rolled nginx eats your time:
- SSL by hand on every domain. Certificates must be issued and renewed on each node; miss a renewal and the domain drops with a cert error mid-push.
- Configs drift. A change to
proxy_pass, limits or headers has to be rolled out to every node by hand — one forgotten node serves the old version. - No unified monitoring. To know a node is down or the backend isn't answering you need your own log collection and alerting — otherwise you find out from a conversion dip.
- Slow migration when a node is banned. IP blocked — you spin up a new VPS by hand, install nginx, copy configs, re-issue SSL, change DNS. Hours of downtime.
- Scale = toil. Every new pool of domains means SSH, configs and certificates on each node again. A mistake in the template is replicated everywhere.
- Secrets and access on the nodes. Keys, backend addresses and configs sit on cheap VPS that your host can access.
Privateflare runs the exact same architecture — proxy nodes in front of your backend — but managed from one dashboard. Auto-SSL for every domain, instant config propagation across all nodes at once, built-in monitoring with Telegram alerts and bulk domain add via API. It stays self-hosted — the infrastructure is yours — with native Keitaro and Binom support. And nothing extra is stored on the node itself.
What the platform takes off your plate
The real win of the managed setup is time and quality: the toil disappears, and the chance of an error that drops a domain or campaign falls sharply.
- Config and certificate sync. Configs and SSL roll out to every node at once and automatically — nothing drifts, certificates renew themselves, and domains never fall off because of an expired cert.
- Single-point management. Every node and domain is configured centrally — no SSH or per-VPS nginx edits; hours saved on every rollout.
- Low barrier to entry. No deep technical knowledge or a separate expensive admin — everything is done with clicks in the dashboard, not configs, SSH and manual nginx tuning.
- Nodes optimized for protection. The VPS are already configured and hardened for filtering, rate limits and absorbing attacks — no manual tuning of each bare server.
- Zero fingerprint. Nodes don't reveal a common link between each other or with the backend — from the outside they're independent nodes with no single detectable footprint.
- Monitoring and alerts. Node, domain and backend health is visible in real time, and failures land in Telegram instead of surfacing as a conversion drop.
- Backend failover. If the origin goes down, traffic automatically shifts to a backup — no manual intervention.
How to run it on Privateflare instead of hand-rolled nginx
- Add your domains and backend (origin) — the private IP or address of your content server.
- Spread domains across nodes and IPs right from the dashboard, with no manual nginx setup on each VPS.
- Enable auto-SSL, cache and WAF — certificates issue and renew themselves and the config applies across every node at once.
- The real visitor IP is forwarded to the backend in headers out of the box — tracker stats stay intact.
- Firewall the backend to the node IPs, and run bulk operations via the API.
If a node gets blocked, migration takes just minutes and is easy to automate — no manually spinning up nginx and re-issuing certificates.
Our philosophy. We don't interfere with a client's business unless asked. We store nothing extra — only configs and settings — and give you convenient tools. Everything else is up to you.
FAQ
How does an nginx reverse proxy help an affiliate?
Your lander and tracker domains point at cheap VPS proxies, while all content lives on one powerful backend. The proxies hide the real server, split domains across different IPs and take the load. If one node gets banned the rest keep working, and the origin stays invisible.
Is the real visitor IP forwarded to the backend?
Yes. On the proxy, nginx forwards the real visitor IP in the X-Real-IP and X-Forwarded-For headers, so the backend and your tracker see the genuine address and clicks, redirects and postbacks work without distorting your stats.
Why is a managed platform better than hand-rolled nginx?
A manual setup means issuing and renewing SSL by hand on every domain, syncing configs across dozens of nodes, building your own monitoring and migrating domains by hand when a node is banned. A managed platform does all of that from one dashboard: auto-SSL, instant config propagation across every node, monitoring and fast migration — saving time and cutting mistakes.
How many domains and nodes can I connect?
The number of domains is unlimited, and nodes are added as you grow. Domains can be created manually or in bulk via the API and spread across different nodes and IPs — handy when you run hundreds of landers and campaigns.