From: Grant Slater Date: Wed, 30 Oct 2019 22:29:05 +0000 (+0000) Subject: tilecache: enable some caching in nginx X-Git-Url: https://git.openstreetmap.org/chef.git/commitdiff_plain/245f62a5e463e5009b00d133d99d91c1c8a35d73?hp=8943ebe927583d41f51dce01333f4be680315df0 tilecache: enable some caching in nginx --- diff --git a/cookbooks/nginx/templates/default/nginx.conf.erb b/cookbooks/nginx/templates/default/nginx.conf.erb index e5969ce45..03671bbe0 100644 --- a/cookbooks/nginx/templates/default/nginx.conf.erb +++ b/cookbooks/nginx/templates/default/nginx.conf.erb @@ -51,10 +51,10 @@ http { resolver_timeout 5s; <% if node['nginx']['cache']['fastcgi']['enable'] -%> - fastcgi_cache_path /var/cache/nginx/fastcgi-cache levels=1:2 keys_zone=<%= node['nginx']['cache']['fastcgi']['keys_zone'] %> inactive=<%= node['nginx']['cache']['fastcgi']['inactive'] %> max_size=<%= node['nginx']['cache']['fastcgi']['max_size'] %>; + fastcgi_cache_path /var/cache/nginx/fastcgi-cache levels=1:2 use_temp_path=off keys_zone=<%= node['nginx']['cache']['fastcgi']['keys_zone'] %> inactive=<%= node['nginx']['cache']['fastcgi']['inactive'] %> max_size=<%= node['nginx']['cache']['fastcgi']['max_size'] %>; <% end -%> <% if node['nginx']['cache']['proxy']['enable'] -%> - proxy_cache_path /var/cache/nginx/proxy-cache levels=1:2 keys_zone=<%= node['nginx']['cache']['proxy']['keys_zone'] %> inactive=<%= node['nginx']['cache']['proxy']['inactive'] %> max_size=<%= node['nginx']['cache']['proxy']['max_size'] %>; + proxy_cache_path /var/cache/nginx/proxy-cache levels=1:2 use_temp_path=off keys_zone=<%= node['nginx']['cache']['proxy']['keys_zone'] %> inactive=<%= node['nginx']['cache']['proxy']['inactive'] %> max_size=<%= node['nginx']['cache']['proxy']['max_size'] %>; <% end -%> include /etc/nginx/conf.d/*.conf; diff --git a/cookbooks/tilecache/templates/default/nginx_tile.conf.erb b/cookbooks/tilecache/templates/default/nginx_tile.conf.erb index c3b220f2d..98d283932 100644 --- a/cookbooks/tilecache/templates/default/nginx_tile.conf.erb +++ b/cookbooks/tilecache/templates/default/nginx_tile.conf.erb @@ -164,7 +164,14 @@ server { return 404; } +<% for i in 0..13 do %> +<% if i == 0 -%> + # Default Fallback Location Handler (lowest) location / { +<% elsif -%> + # Dedicated zoom handler for caching + location /<%= i %>/ { +<% end %> proxy_pass http://tile_cache_backend; proxy_set_header X-Forwarded-For $remote_addr; proxy_http_version 1.1; @@ -183,6 +190,19 @@ server { proxy_ignore_headers Set-Cookie; proxy_hide_header Set-Cookie; +<% if i != 0 -%> + # Caching + proxy_cache "proxy_cache_zone"; + proxy_cache_lock on; + proxy_cache_valid 200 1d; + proxy_cache_valid 404 15m; + # Serve stale cache on errors or if updating + proxy_cache_use_stale error timeout updating http_500 http_503 http_504; + # If in cache as stale, serve stale and update in background + proxy_cache_background_update on; + proxy_cache_min_uses 8; +<% end -%> + # Set a QoS cookie if none presented (uses nginx Map) add_header Set-Cookie $cookie_qos_token_set; <% if node[:ssl][:strict_transport_security] -%> @@ -217,4 +237,5 @@ server { proxy_set_header Cache-Control $limit_http_cache_control; proxy_set_header Pragma $limit_http_pragma; } +<% end %> } diff --git a/roles/tilecache.rb b/roles/tilecache.rb index ee5777735..6a8acf32f 100644 --- a/roles/tilecache.rb +++ b/roles/tilecache.rb @@ -16,7 +16,13 @@ default_attributes( :tcp_fastopen_key => "tile" }, :nginx => { - :access_log => false + :access_log => false, + :cache => { + :proxy => { + :enable => true, + :keys_zone => "proxy_cache_zone:64M", + } + } }, :sysctl => { :sockets => {