Skip to main content
verifyngo acts as a proxy itself, so your public-facing reverse proxy should forward traffic to verifyngo, which in turn forwards verified requests to your app. The flow looks like this:
This guide shows minimal config for each of the three most common reverse proxies.
Whenever you put a reverse proxy in front of verifyngo, enable trust_real_ip: true in verifyngo’s config and add the proxy’s IP to trusted_proxies. Without this, verifyngo sees the proxy’s IP as the client IP instead of the real visitor’s IP, which breaks IP-based rules and ban tracking.

Proxy configuration

Pick the reverse proxy you’re using and follow the snippet for your stack.
Add a proxy_pass block that points to verifyngo on 127.0.0.1:8080. Forward the standard headers so verifyngo can read the real client IP and protocol:
nginx.conf
After editing, test and reload Nginx:

trust_real_ip config

After setting up your reverse proxy, update your config.json to tell verifyngo to trust the forwarded IP header:
config.json
Automatic trust for private addresses: if trusted_proxies is empty, verifyngo automatically trusts loopback and private-range IPs — specifically any address that is a loopback address or falls within a private IP range. This covers the common case where your reverse proxy and verifyngo run on the same host or inside the same private Docker network. Public-IP proxies: if your proxy connects from a public IP (for example, a cloud load balancer), the automatic trust does not apply. List the proxy’s IP explicitly in trusted_proxies:
config.json