upstream loadbalancer { server doh.hnshosting.au:443 weight=1 max_fails=1 fail_timeout=30s; server easyhandshake.com:8053 weight=1 max_fails=1 fail_timeout=30s; server doh.hnsdns.com:443 weight=1 max_fails=1 fail_timeout=30s; server hs.dnssec.dev:443 weight=1 max_fails=1 fail_timeout=30s; server hnsns.net:443 weight=1 max_fails=1 fail_timeout=30s; } map $host $upstream { ~^doh\.hnshosting\.au$ doh.hnshosting.au; ~^easyhandshake\.com$ easyhandshake.com; ~^doh\.hnsdns\.com$ doh.hnsdns.com; ~^hs\.dnssec\.dev$ hs.dnssec.dev; ~^hnsns\.net$ hnsns.net; } server { listen 80; # Catch all servers server_name _; location / { # Set the upstream based on the host header proxy_set_header Host $upstream; proxy_pass https://loadbalancer; proxy_ssl_verify off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Show which node served the request in logs add_header X-Load-Balancer-Node $upstream_addr; } }