2022-07-06 14:01:18 +02:00
|
|
|
###########
|
|
|
|
# mempool #
|
|
|
|
###########
|
|
|
|
|
2023-08-27 10:28:51 -07:00
|
|
|
# Block the internal APIs of esplora
|
2023-08-28 02:18:59 +09:00
|
|
|
location /api/internal/ {
|
2023-11-18 15:09:02 +09:00
|
|
|
return 403;
|
2023-08-28 02:18:59 +09:00
|
|
|
}
|
|
|
|
location /api/v1/internal/ {
|
2023-11-18 15:09:02 +09:00
|
|
|
return 403;
|
2023-08-16 00:44:06 -07:00
|
|
|
}
|
2023-08-27 10:28:51 -07:00
|
|
|
|
2022-07-06 14:01:18 +02:00
|
|
|
# websocket has special HTTP headers
|
|
|
|
location /api/v1/ws {
|
|
|
|
try_files /dev/null @mempool-api-v1-websocket;
|
|
|
|
}
|
|
|
|
|
|
|
|
# warm cache mining and mempool API responses
|
2022-01-12 23:12:49 +09:00
|
|
|
location /api/v1/statistics {
|
2022-07-06 14:01:18 +02:00
|
|
|
try_files /dev/null @mempool-api-v1-cache-warm;
|
2022-01-04 15:28:17 +09:00
|
|
|
}
|
2022-03-29 12:07:16 -05:00
|
|
|
location /api/v1/mining {
|
2022-07-06 14:01:18 +02:00
|
|
|
try_files /dev/null @mempool-api-v1-cache-warm;
|
2022-01-28 13:32:03 +00:00
|
|
|
}
|
2024-01-26 10:26:28 -05:00
|
|
|
location /api/v1/fees/recommended {
|
2024-01-26 10:40:21 -05:00
|
|
|
try_files /dev/null @mempool-api-v1-cache-hot;
|
2024-01-26 10:26:28 -05:00
|
|
|
}
|
2022-07-06 14:01:18 +02:00
|
|
|
|
|
|
|
# it's ok to cache blockchain data "forever", so we do 30d
|
2022-06-24 17:52:34 +09:00
|
|
|
location /api/v1/block/ {
|
2022-07-06 14:01:18 +02:00
|
|
|
try_files /dev/null @mempool-api-v1-cache-forever;
|
2022-06-21 22:27:40 +09:00
|
|
|
}
|
2022-07-06 14:01:18 +02:00
|
|
|
|
|
|
|
# everything else gets "normal" cache
|
2022-01-04 15:28:17 +09:00
|
|
|
location /api/v1 {
|
2022-07-06 14:01:18 +02:00
|
|
|
try_files /dev/null @mempool-api-v1-cache-normal;
|
2022-01-04 15:28:17 +09:00
|
|
|
}
|
2022-07-06 14:01:18 +02:00
|
|
|
|
|
|
|
###########
|
|
|
|
# esplora #
|
|
|
|
###########
|
|
|
|
|
|
|
|
# it's ok to cache blockchain data "forever", so we do 30d
|
2022-06-24 17:52:34 +09:00
|
|
|
location /api/block/ {
|
2022-06-21 22:27:40 +09:00
|
|
|
rewrite ^/api/(.*) /$1 break;
|
2022-07-06 14:01:18 +02:00
|
|
|
try_files /dev/null @esplora-api-cache-forever;
|
2022-06-21 22:27:40 +09:00
|
|
|
}
|
2022-07-06 14:01:18 +02:00
|
|
|
# other API responses cannot be cached
|
2022-01-04 15:28:17 +09:00
|
|
|
location /api/ {
|
|
|
|
rewrite ^/api/(.*) /$1 break;
|
2022-07-06 14:01:18 +02:00
|
|
|
try_files /dev/null @esplora-api-cache-disabled;
|
2022-01-04 15:28:17 +09:00
|
|
|
}
|
|
|
|
|
2022-07-06 14:01:18 +02:00
|
|
|
###########
|
|
|
|
# routing #
|
|
|
|
###########
|
|
|
|
|
|
|
|
location @mempool-api-v1-websocket {
|
|
|
|
proxy_pass $mempoolMainnet;
|
2022-06-21 22:27:40 +09:00
|
|
|
proxy_http_version 1.1;
|
|
|
|
|
2022-07-11 15:31:13 +02:00
|
|
|
proxy_set_header Host $host;
|
2022-06-21 22:27:40 +09:00
|
|
|
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;
|
2022-07-06 14:01:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
location @mempool-api-v1-cache-forever {
|
|
|
|
proxy_pass $mempoolMainnet;
|
|
|
|
|
2022-07-11 15:31:13 +02:00
|
|
|
proxy_set_header Host $host;
|
2022-07-06 14:01:18 +02:00
|
|
|
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;
|
2022-06-21 22:27:40 +09:00
|
|
|
|
|
|
|
proxy_cache_background_update on;
|
|
|
|
proxy_cache_use_stale updating;
|
|
|
|
proxy_cache api;
|
|
|
|
proxy_cache_valid 200 30d;
|
|
|
|
proxy_redirect off;
|
|
|
|
|
|
|
|
expires 30d;
|
|
|
|
}
|
|
|
|
|
2024-01-26 10:40:21 -05:00
|
|
|
location @mempool-api-v1-cache-hot {
|
|
|
|
proxy_pass $mempoolMainnet;
|
|
|
|
|
|
|
|
proxy_set_header Host $host;
|
|
|
|
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;
|
|
|
|
|
|
|
|
proxy_cache_background_update on;
|
|
|
|
proxy_cache_use_stale updating;
|
|
|
|
proxy_cache api;
|
|
|
|
proxy_cache_valid 200 1s;
|
|
|
|
proxy_redirect off;
|
|
|
|
}
|
|
|
|
|
2022-07-06 14:01:18 +02:00
|
|
|
location @mempool-api-v1-cache-warm {
|
|
|
|
proxy_pass $mempoolMainnet;
|
2022-01-04 15:28:17 +09:00
|
|
|
|
2022-07-11 15:31:13 +02:00
|
|
|
proxy_set_header Host $host;
|
2022-01-04 15:28:17 +09:00
|
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
2022-01-12 23:12:49 +09:00
|
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
2022-01-04 15:28:17 +09:00
|
|
|
|
2022-01-13 15:06:13 +09:00
|
|
|
proxy_cache_background_update on;
|
|
|
|
proxy_cache_use_stale updating;
|
|
|
|
proxy_cache api;
|
|
|
|
proxy_cache_valid 200 10s;
|
2022-01-04 15:28:17 +09:00
|
|
|
proxy_redirect off;
|
2022-01-13 15:06:13 +09:00
|
|
|
}
|
|
|
|
|
2022-07-06 14:01:18 +02:00
|
|
|
location @mempool-api-v1-cache-normal {
|
|
|
|
proxy_pass $mempoolMainnet;
|
2022-01-12 23:12:49 +09:00
|
|
|
|
2022-07-11 15:31:13 +02:00
|
|
|
proxy_set_header Host $host;
|
2022-01-13 15:06:13 +09:00
|
|
|
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;
|
|
|
|
|
|
|
|
proxy_cache api;
|
2023-06-16 17:15:31 -07:00
|
|
|
proxy_cache_valid 200 2s;
|
2022-01-13 15:06:13 +09:00
|
|
|
proxy_redirect off;
|
2022-06-21 22:27:40 +09:00
|
|
|
|
2023-06-16 17:15:31 -07:00
|
|
|
expires 2s;
|
2022-01-12 23:12:49 +09:00
|
|
|
}
|
|
|
|
|
2022-07-06 14:01:18 +02:00
|
|
|
location @mempool-api-v1-cache-disabled {
|
|
|
|
proxy_pass $mempoolMainnet;
|
2022-01-12 23:12:49 +09:00
|
|
|
|
2022-07-11 15:31:13 +02:00
|
|
|
proxy_set_header Host $host;
|
2022-01-12 23:12:49 +09:00
|
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
2022-01-04 15:28:17 +09:00
|
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
2022-01-12 23:12:49 +09:00
|
|
|
|
|
|
|
proxy_redirect off;
|
|
|
|
proxy_buffering off;
|
|
|
|
|
|
|
|
expires -1;
|
2022-01-04 15:28:17 +09:00
|
|
|
}
|
|
|
|
|
2022-07-06 14:01:18 +02:00
|
|
|
location @esplora-api-cache-disabled {
|
|
|
|
proxy_pass $esploraMainnet;
|
2022-01-04 15:28:17 +09:00
|
|
|
|
2022-07-11 15:31:13 +02:00
|
|
|
proxy_set_header Host $host;
|
2022-01-04 15:28:17 +09:00
|
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
2022-01-12 23:12:49 +09:00
|
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
2022-01-04 15:28:17 +09:00
|
|
|
|
|
|
|
proxy_redirect off;
|
2022-01-12 23:12:49 +09:00
|
|
|
proxy_buffering off;
|
2022-06-21 22:27:40 +09:00
|
|
|
|
|
|
|
expires -1;
|
|
|
|
}
|
|
|
|
|
2022-07-06 14:01:18 +02:00
|
|
|
location @esplora-api-cache-forever {
|
|
|
|
proxy_pass $esploraMainnet;
|
2022-06-21 22:27:40 +09:00
|
|
|
|
2022-07-11 15:31:13 +02:00
|
|
|
proxy_set_header Host $host;
|
2022-06-21 22:27:40 +09:00
|
|
|
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;
|
|
|
|
|
|
|
|
proxy_cache_background_update on;
|
|
|
|
proxy_cache_use_stale updating;
|
|
|
|
proxy_cache api;
|
|
|
|
proxy_cache_valid 200 30d;
|
|
|
|
proxy_redirect off;
|
|
|
|
|
|
|
|
expires 30d;
|
2022-01-04 15:28:17 +09:00
|
|
|
}
|