X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/883c754c10bcc8b94844658c61512dfbb8a2e8a3..b843df81981adadc90d0ee9a75e9da1d311b2c57:/cookbooks/tilecache/templates/default/nginx_tile.conf.erb diff --git a/cookbooks/tilecache/templates/default/nginx_tile.conf.erb b/cookbooks/tilecache/templates/default/nginx_tile.conf.erb index c3b220f2d..47d3bd372 100644 --- a/cookbooks/tilecache/templates/default/nginx_tile.conf.erb +++ b/cookbooks/tilecache/templates/default/nginx_tile.conf.erb @@ -2,6 +2,8 @@ upstream tile_cache_backend { server 127.0.0.1; + server 127.0.0.2; + server 127.0.0.3; # Add the other caches to relieve pressure if local squid failing # Balancer: round-robin @@ -15,7 +17,7 @@ upstream tile_cache_backend { <% end -%> <% end -%> - keepalive 1024; + keepalive 512; keepalive_requests 1024; } @@ -164,25 +166,62 @@ server { return 404; } +<% for i in 0..14 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; proxy_set_header Connection ''; - proxy_connect_timeout 5s; + proxy_connect_timeout 10s; - # Preserve host header. - proxy_set_header Host $host; + # Replace host header. + proxy_set_header Host 'tile.openstreetmap.org'; # Do not pass cookies to backends. proxy_set_header Cookie ''; # Do not pass Accept-Encoding to backends. proxy_set_header Accept-Encoding ''; + # Do not pass Accept to backends. + proxy_set_header Accept ''; + # Do not pass Accept-Language to backends as unused. + proxy_set_header Accept-Language ''; + proxy_set_header Accept-Charset ''; + # Do not send origin, we allow all. + proxy_set_header origin ''; + # Do not pass invalid headers to backend. + proxy_set_header X-Forwarded-Host ''; + proxy_set_header X-Host ''; + proxy_set_header Authorization ''; + proxy_set_header Proxy-Authorization ''; + + # Drop partial requests + proxy_set_header range ''; # Do not allow setting cookies from backends due to caching. 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; + + add_header X-Nginx-Cache-Status $upstream_cache_status; +<% 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 +256,5 @@ server { proxy_set_header Cache-Control $limit_http_cache_control; proxy_set_header Pragma $limit_http_pragma; } +<% end %> }