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;
}

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="yourwebsiteid"
  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
Something missing? Suggest features ✍️