Docker中的NGINX作为缓存-如何在Container重新启动时保留缓存?

ercv8c1e  于 2023-02-07  发布在  Nginx
关注(0)|答案(1)|浏览(246)

我建立了一个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...:-)

pkln4tw6

pkln4tw61#

看起来你的问题和nginx无关。
不知道你是否真的需要在Docker中运行nginx,但如果是这样,你需要使用Docker volumesbind mount机制来确保缓存持久性,在你的情况下,你需要使/TileCacheVol持久化。

相关问题