nginx で地理院地図のタイルキャッシュサーバを作成した時のメモ

QGIS の背景図や GeoServer のテストで地理院地図によくアクセスするので、直接アクセスするよりタイルをキャッシュさせておいた方が地理院のサーバに負荷がかからないのかなーと思って立ててみました。

城好きweb プログラマーの生態メモ nginx + proxy cache を参考にして設定しました。

サーバの OS は debian 7.8 を使いました。

nginx のインストール

# apt-get install nginx -y

設定ファイルの編集

# vi /etc/nginx/nginx.conf

http ディレクティブの中に次の記述を追加しました。

proxy_cache_path /mnt/cache levels=1 keys_zone=cache-sample:64m max_size=5000m inactive=7d;
proxy_temp_path /mnt/tmp;

server {
   listen 10080;
   location / {
      proxy_pass http://cyberjapandata.gsi.go.jp;
      proxy_cache cache-sample;
      proxy_cache_key $scheme:$host$request_uri;
      proxy_cache_valid 200 3d;
   } 
}
# service nginx restart

設定の意味については先ほどの Web サイトを確認していただくとして、これで http://%nginx サーバIP%:10080 にアクセスするとキャッシュされていないタイルは国土地理院のサーバへ、キャッシュされているタイルは nginx が返してくれるようになるはずです。

サーバのディスク容量に余裕があったので、キャッシュする最大サイズを 5GB に設定しています。そこまではアクセスしないと思いますが。

QGIS のタイルレイヤプラグインであれば、tsv ファイルを増やして、 ServiceUrl に http://%%nginx サーバIP%%:10080/xyz/std/{z}/{x}/{y}.png とかしてあげれば OK。

2015-08-04追記

Dockerfile を作成しました。こっちのが簡単だと思います。

k-side.hatenablog.jp