]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/tilecache/templates/default/nginx_tile.conf.erb
tilecache: fix limit supported request methods
[chef.git] / cookbooks / tilecache / templates / default / nginx_tile.conf.erb
index 0b77171e84c7ed73001b51f01be3e1db326ed8ee..eb7cb6771bd45f9d4d2ab285c9101f1381b0e5da 100644 (file)
@@ -74,22 +74,22 @@ map $http_referer $denied_referer {
 }
 
 map $http_referer $osm_referer {
-  default                                 0;     # False
+  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 {
@@ -179,6 +179,11 @@ 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;
@@ -254,20 +259,12 @@ server {
         return 418;
       }
 
-      # Only allow cache purges if from OpenStreetMap referer
-      if ($osm_referer) {
-        # Allow cache purging headers only from select User-Agents (uses nginx Map)
-        proxy_set_header Cache-Control $limit_http_cache_control;
-        proxy_set_header Pragma $limit_http_pragma;
-      }
-      # nginx has no if else logic
-      if ($osm_referer != 'osm') {
-        proxy_set_header Cache-Control '';
-        proxy_set_header Pragma '';
-      }
-
       # Strip any ?query parameters from urls
       set $args '';
+
+      # Allow cache purging headers only from select User-Agents (uses nginx Map)
+      proxy_set_header Cache-Control $limit_http_cache_control;
+      proxy_set_header Pragma $limit_http_pragma;
     }
 <% end %>
 }