1 # DO NOT EDIT - This file is being maintained by Chef
3 <% [80, 443].each do |port| -%>
4 <VirtualHost *:<%= port %>>
6 # Basic server configuration
8 ServerName <%= node[:fqdn] %>
9 ServerAlias api.openstreetmap.org www.openstreetmap.org
10 ServerAdmin webmaster@openstreetmap.org
23 LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %Dus %{UNIQUE_ID}e %{SSL_PROTOCOL}x %{SSL_CIPHER}x" combined_with_time
24 CustomLog /var/log/apache2/access.log combined_with_time
25 ErrorLog /var/log/apache2/error.log
28 # Turn on various features
34 # Add the unique ID to the request headers
36 RequestHeader set X-Request-Id %{UNIQUE_ID}e
39 # Remove Proxy request header to mitigate https://httpoxy.org/
41 RequestHeader unset Proxy early
44 # Block troublesome GPX data scrapping
46 RewriteCond %{REQUEST_METHOD} HEAD
47 RewriteRule ^/trace/\d+/data - [F,L]
52 RewriteCond %{HTTP_USER_AGENT} tilesAtHome
56 # Block changeset scraper
58 RewriteCond %{HTTP_USER_AGENT} "OSMApp Tuner"
62 # Block requests for the old 404 map tile
64 RewriteRule ^/openlayers/img/404.png$ - [G,L]
67 # Block attempts to access old API versions
69 RewriteRule ^/api/0.[12345]/ - [G,L]
72 # Block JOSM revisions 1722-1727 as they have a serious bug that causes
73 # lat/lon to be swapped (http://josm.openstreetmap.de/ticket/2804)
75 RewriteCond %{HTTP_USER_AGENT} "^JOSM/[0-9]+\.[0-9]+ \(172[234567]\)"
79 # Block a changeset that seems to lock things up
81 RewriteRule ^/api/0.6/changeset/6823497/download$ - [F,L]
84 # Force special MIME type for crossdomain.xml files
86 <Files crossdomain.xml>
87 ForceType text/x-cross-domain-policy
91 # Set expiry for assets
94 Header unset Last-Modified
98 ExpiresDefault "access plus 1 year"
102 # Set expiry for attachments
104 <Location /attachments/>
105 Header unset Last-Modified
109 ExpiresDefault "access plus 1 year"
113 # Set expiry for other static content
115 <Location /export/embed.html>
116 ExpiresDefault "access plus 7 days"
119 ExpiresDefault "access plus 10 years"
121 <Location /javascripts/>
122 ExpiresDefault "access plus 10 years"
124 <Location /openlayers/>
125 ExpiresDefault "access plus 7 days"
127 <Location /stylesheets/>
128 ExpiresDefault "access plus 10 years"
132 # Set expiry for Potlatch 1
134 <Location /potlatch/>
135 ExpiresDefault "access plus 7 days"
139 # Set expiry for Potlatch 2
141 <Location /potlatch2/>
142 ExpiresByType application/x-shockwave-flash "access plus 1 day"
143 ExpiresByType application/xml "access plus 1 day"
144 ExpiresByType text/css "access plus 1 day"
145 ExpiresByType image/png "access plus 7 days"
151 DocumentRoot <%= node[:web][:base_directory] %>/rails/public
153 PassengerMinInstances 10
154 PassengerMaxRequests 5000
155 PassengerMaxRequestQueueSize 250
156 <% if port == 443 -%>
157 PassengerPreStart https://www.openstreetmap.org/
159 PassengerPreStart http://www.openstreetmap.org/
161 SetEnv SECRET_KEY_BASE <%= @secret_key_base %>
162 Alias /favicon.ico <%= node[:web][:base_directory] %>/rails/app/assets/favicons/favicon.ico
163 Alias /openlayers <%= node[:web][:base_directory] %>/rails/vendor/assets/openlayers
164 Alias /stats /store/rails/stats
165 Alias /user/image /store/rails/user/image
166 Alias /attachments /store/rails/attachments
169 # Preserve the host name when forwarding to the proxy
174 # Set a long timeout - changeset uploads can take a long time
179 # Allow all proxy requests
186 # Pass some other API calls to the backends via a load balancer
188 ProxyPass /api/0.6/map balancer://backend/api/0.6/map
189 ProxyPass /api/0.6/tracepoints balancer://backend/api/0.6/tracepoints
190 ProxyPass /api/0.6/amf/read balancer://backend/api/0.6/amf/read
191 ProxyPass /api/0.6/swf/trackpoints balancer://backend/api/0.6/swf/trackpoints
192 ProxyPassMatch ^(/api/0\.6/changeset/[0-9]+)$ balancer://backend$1
193 ProxyPassMatch ^(/api/0\.6/changeset/[0-9]+/upload)$ balancer://bytemark$1
194 ProxyPassMatch ^(/api/0\.6/changeset/[0-9]+/download)$ balancer://backend$1
195 ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+)$ balancer://backend$1
196 ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+/(full|history|search|ways))$ balancer://backend$1
197 ProxyPass /api/0.6/nodes balancer://backend/api/0.6/nodes
198 ProxyPass /api/0.6/ways balancer://backend/api/0.6/ways
199 ProxyPass /api/0.6/relations balancer://backend/api/0.6/relations
200 ProxyPassMatch ^(/trace/[0-9]+/data(|/|.xml))$ balancer://backend$1
203 # Redirect trac and wiki requests to the right places
205 RedirectPermanent /trac/ http://trac.openstreetmap.org/
206 RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
209 # Redirect requests for various images to the right place
211 RedirectPermanent /images/osm_logo.png http://www.openstreetmap.org/assets/osm_logo.png
212 RedirectPermanent /images/cc_button.png http://www.openstreetmap.org/assets/cc_button.png
215 # Define a load balancer for the local backends
217 <Proxy balancer://backend>
218 ProxySet lbmethod=bybusyness
219 <% node[:web][:backends].each do |backend| -%>
220 <% if port == 443 -%>
221 BalancerMember https://<%= backend %> disablereuse=on
223 BalancerMember http://<%= backend %>
229 # Define a load balancer for the Bytemark backends
231 <Proxy balancer://bytemark>
232 ProxySet lbmethod=bybusyness
233 <% ["rails4.bm", "rails5.bm"].each do |backend| -%>
234 <% if port == 443 -%>
235 BalancerMember https://<%= backend %> disablereuse=on
237 BalancerMember http://<%= backend %>
244 # Redirect requests which should be secure to https
246 RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
247 RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
248 RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
249 RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
250 RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
251 RewriteCond %{REQUEST_URI} ^/user/reset-password$
252 RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
255 # Redirect api requests made to www.osm.org to api.osm.org
257 # RewriteCond %{HTTP_HOST} =www.openstreetmap.org
258 # RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
261 # Redirect non-api requests made to api.osm.org to www.osm.org
263 RewriteCond %{HTTP_HOST} =api.openstreetmap.org
264 RewriteCond %{REQUEST_URI} !^/api/
265 RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
266 <% elsif port == 443 -%>
269 # Redirect api requests made to www.osm.org to api.osm.org
271 # RewriteCond %{HTTP_HOST} =www.openstreetmap.org
272 # RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
275 # Redirect non-api requests made to api.osm.org to www.osm.org
277 RewriteCond %{HTTP_HOST} =api.openstreetmap.org
278 RewriteCond %{REQUEST_URI} !^/api/
279 RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
285 ServerName openstreetmap.org
286 ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
287 ServerAlias openstreetmap.com www.openstreetmap.com
288 ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
289 ServerAlias openstreetmap.net www.openstreetmap.net
290 ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
291 ServerAlias openstreetmap.ca www.openstreetmap.ca
292 ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
293 ServerAlias openstreetmap.eu www.openstreetmap.eu
294 ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
295 ServerAlias openstreetmap.pro www.openstreetmap.pro
296 ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
297 ServerAlias openstreetmaps.org www.openstreetmaps.org
298 ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
299 ServerAlias osm.org www.osm.org
300 ServerAlias maps.osm.org mapz.osm.org
301 ServerAlias openmaps.org www.openmaps.org
302 ServerAlias maps.openmaps.org mapz.openmaps.org
303 ServerAlias openstreetmap.io www.openstreetmap.io
304 ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
305 ServerAlias osm.io www.osm.io
306 ServerAlias maps.osm.io mapz.osm.io
307 ServerAlias openworldmap.org www.openworldmap.org
308 ServerAlias maps.openworldmap.org mapz.openworldmap.org
309 ServerAlias freeosm.org www.freeosm.org
310 ServerAlias maps.freeosm.org mapz.freeosm.org
311 ServerAlias open-maps.org www.open-maps.org
312 ServerAlias maps.open-maps.org mapz.open-maps.org
313 ServerAlias open-maps.com www.open-maps.com
314 ServerAlias maps.open-maps.com mapz.open-maps.com
315 ServerAlias osmbugs.org www.osmbugs.org
316 ServerAlias maps.osmbugs.org mapz.osmbugs.org
319 ServerAlias openstreetmap.pm www.openstreetmap.pm
321 RedirectPermanent / http://www.openstreetmap.org/
325 ServerName openstreetmap.org
326 ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
330 RedirectPermanent / https://www.openstreetmap.org/
334 ServerName openstreetmap.org.uk
335 ServerAlias www.openstreetmap.org.uk
336 ServerAlias openstreetmap.co.uk
337 ServerAlias www.openstreetmap.co.uk
339 RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
340 RedirectPermanent / http://www.openstreetmap.org/
343 <Directory <%= node[:web][:base_directory] %>/rails/public>
347 <Directory /srv/www.openstreetmap.org/rails/app/assets>
351 <Directory /srv/www.openstreetmap.org/rails/vendor/assets>
355 <Directory /store/rails/stats>
359 <Directory /store/rails/user/image>
363 <Directory /store/rails/attachments>