我建立了一个NGINX来缓存来自OpenStreetMaps服务器的瓦片。我的目标是节省带宽和快速传输,因为OSM服务器非常慢。
在用最常用的图块填充缓存后,我在容器重新启动后丢失了它们。但是我想保留缓存。
怎么做呢?
下面是我的配置:
proxy_cache_path /TileCacheVol/tile levels=1:2 keys_zone=openstreetmap-backend-cache:8m max_size=500000m inactive=1000d;
proxy_temp_path /TileCacheVol/tile/tmp;
add_header x-nginx-cache $upstream_cache_status;
upstream openstreetmap_backend {
server c.tile.opentopomap.org;
server b.tile.opentopomap.org;
server a.tile.opentopomap.org;
}
server {
listen 105;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X_FORWARDED_PROTO http;
proxy_set_header Host $http_host;
proxy_cache openstreetmap-backend-cache;
# Cache Dauer (2y, 365d, 4m, ...)
proxy_cache_valid 200 302 2y;
proxy_cache_valid 404 1m;
proxy_redirect off;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
if (!-f $request_filename) {
proxy_pass http://openstreetmap_backend;
break;
}
}
}
我想找一个解决方案,但没有找到。我不是这方面的Maven...:-)
1条答案
按热度按时间pkln4tw61#
看起来你的问题和nginx无关。
不知道你是否真的需要在Docker中运行nginx,但如果是这样,你需要使用Docker volumes或bind mount机制来确保缓存持久性,在你的情况下,你需要使/TileCacheVol持久化。