Proxy DataFast with Nginx

Learn how to proxy DataFast analytics through Nginx to bypass adblockers and improve accuracy. This guide works for both standalone Nginx and Nginx as a reverse proxy.

1. Basic Nginx Configuration

Add the following to your Nginx configuration (usually in /etc/nginx/sites-available/your-site or /etc/nginx/conf.d/your-site.conf):

# Proxy the analytics script
location /js/script.js {
    proxy_pass https://datafa.st/js/script.js;
    proxy_set_header Host datafa.st;
    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;
    
    # Cache the script for 1 year
    proxy_cache_valid 200 1y;
    add_header Cache-Control "public, max-age=31536000";
    expires 1y;
}

# Proxy the events endpoint
location /api/events {
    proxy_pass https://datafa.st/api/events;
    proxy_set_header Host datafa.st;
    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;
    
    # Allow POST requests
    proxy_method POST;
    proxy_pass_request_body on;
}

Note: If you already have an /api/events API endpoint, add data-api-url to the DataFast script tag to send events to your own API endpoint. For example, data-api-url="/datafast-events" will send events to /datafast-events instead of /api/events. Read more here

2. Optional: Add Caching Configuration

For better performance, you can add a caching configuration:

# Define cache zone
proxy_cache_path /var/cache/nginx/datafast_cache levels=1:2 keys_zone=datafast_cache:10m max_size=10g inactive=60m use_temp_path=off;

# In your server block
location /js/script.js {
    proxy_cache datafast_cache;
    proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
    proxy_cache_valid 200 1y;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    
    # ... rest of the configuration from step 1
}

3. Update Your Script Tag

Replace your existing DataFast script with the proxied version:

<script
  defer
  data-website-id="dfid_******""
  data-domain="yourdomain.com"
  src="/js/script.js"
></script>

4. Test and Reload Nginx

# Test the configuration
sudo nginx -t

# If the test is successful, reload Nginx
sudo systemctl reload nginx

Verification

To verify the proxy is working:

  1. Visit your website
  2. Open the network tab in your browser's developer tools
  3. Check that analytics requests are going through your domain instead of datafa.st

Troubleshooting

All visitors showing from the same location

If your analytics show all visitors from a single location (usually your server's location), your proxy isn't forwarding visitor IPs.

To fix:

  1. Verify your proxy sends x-real-ip or x-forwarded-for headers with the client IP
  2. If the issue persists, contact support with your proxy configuration
Something missing? Suggest features ✍️