X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/1aca4d24e609b234bdf9ad4708611d79700c390d..db079c5b812a1cab38f2c7707a9d1c842fe71bd4:/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 c1f9956c9..eb7cb6771 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; } @@ -71,18 +73,23 @@ map $http_referer $denied_referer { 'http://osm.org' 1; # Faked } +map $http_referer $osm_referer { + default ''; # False + '~^https:\/\/www\.openstreetmap\.org\/' 'osm'; # True +} + # Limit Cache-Control header to only approved User-Agents -map $http_user_agent $limit_http_cache_control { - default ''; # Unset Header - '~^Mozilla\/5\.0\ QGIS\/' ''; # Unset Header - '~^Mozilla\/5\.0\ ' $http_cache_control; # Pass Header +map $osm_referer$http_user_agent $limit_http_cache_control { + default ''; # Unset Header + '~^osmMozilla\/5\.0\ QGIS\/' ''; # Unset Header + '~^osmMozilla\/5\.0\ ' $http_cache_control; # Pass Header } # Limit Pragma header to only approved User-Agents -map $http_user_agent $limit_http_pragma { - default ''; # Unset Header - '~^Mozilla\/5\.0\ QGIS\/' ''; # Unset Header - '~^Mozilla\/5\.0\ ' $http_pragma; # Pass Header +map $osm_referer$http_user_agent $limit_http_pragma { + default ''; # Unset Header + '~^osmMozilla\/5\.0\ QGIS\/' ''; # Unset Header + '~^osmMozilla\/5\.0\ ' $http_pragma; # Pass Header } server { @@ -164,7 +171,7 @@ server { return 404; } -<% for i in 0..13 do %> +<% for i in 0..14 do %> <% if i == 0 -%> # Default Fallback Location Handler (lowest) location / { @@ -172,19 +179,39 @@ server { # Dedicated zoom handler for caching location /<%= i %>/ { <% end %> + # Only allow GET / HEAD / OPTIONS (CORS) requests + limit_except GET HEAD OPTIONS { + deny all; + } + 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;