}
# Placeholder for blocking abuse
+ include /etc/nginx/blocked_hosts;
allow all;
-
+
+ # Block some bulk download agents
+ if ($http_user_agent ~* LWP::Simple|downloadosm|BBBike) {
+ return 403;
+ }
+
+ # Block some robots
+ if ($http_user_agent ~* msnbot|twiceler) {
+ return 403;
+ }
+
# Map api.openstreetmap/0.n/... to api.openstreetmap/api/0.n/...
if ($host ~* ^api\.) {
rewrite ^/(0\.[0-9]+)/(.*)$ /api/$1/$2;
# Strip asset tags
location ~ ^/(images|javascripts|openlayers|stylesheets|user/image)/ {
+ # Strip asset tags
rewrite ^/(.*)/[0-9]+$ /$1;
+
+ # Set expiry to the maximum - the asset tag will change
+ # when there is a new version
+ expires max;
+
+ # Only cache OpenLayers for seven days though
+ if ($uri ~ ^/openlayers/) {
+ expires 7d;
+ }
+ }
+
+ # Cache the embedded map page for seven days
+ location ~ ^/export/embed.html$ {
+ expires 7d;
}
# Include fastcgi configuration
return 404;
}
- # Handle Special Case Expiry
- location ~ ^/openlayers/ {
- expires 7d;
- }
- location ~ ^/export/embed.html$ {
- expires 7d;
- }
- location ~ ^/(images|javascripts|stylesheets)/ {
- expires max;
- }
-
# Send everything else to the web backend unless it exists
# in the rails public tree
location / {