location /api/v1/statistics {
	try_files /dev/null @mempool-api-v1-warmcache;
}
location /api/v1/mining/pools {
	try_files /dev/null @mempool-api-v1-warmcache;
}
location /api/v1 {
	try_files /dev/null @mempool-api-v1-coldcache;
}
location /api/ {
	rewrite ^/api/(.*) /$1 break;
	try_files /dev/null @electrs-api-nocache;
}

location @mempool-api-v1-warmcache {
	proxy_pass $mempoolBackend;
	proxy_http_version 1.1;

	proxy_set_header Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
	proxy_set_header X-Forwarded-Proto $scheme;

	proxy_cache_bypass $http_upgrade;
	proxy_cache_background_update on;
	proxy_cache_use_stale updating;
	proxy_cache api;
	proxy_cache_valid 200 10s;
	proxy_redirect off;
}

location @mempool-api-v1-coldcache {
	proxy_pass $mempoolBackend;
	proxy_http_version 1.1;

	proxy_set_header Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
	proxy_set_header X-Forwarded-Proto $scheme;

	proxy_cache_bypass $http_upgrade;
	proxy_cache api;
	proxy_cache_valid 200 10s;
	proxy_redirect off;
	expires 10s;
}

location @mempool-api-v1-nocache {
	proxy_pass $mempoolBackend;
	proxy_http_version 1.1;

	proxy_set_header Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
	proxy_set_header X-Forwarded-Proto $scheme;

	proxy_cache_bypass $http_upgrade;
	proxy_redirect off;
	proxy_buffering off;

	expires -1;
}

location @electrs-api-nocache {
	proxy_pass $electrsBackend;
	proxy_http_version 1.1;

	proxy_set_header Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
	proxy_set_header X-Forwarded-Proto $scheme;

	proxy_cache_bypass $http_upgrade;
	proxy_redirect off;
	proxy_buffering off;
}
