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 # Configure on the fly compression
36 AddOutputFilterByType DEFLATE image/svg+xml
39 # Add the unique ID to the request headers
41 RequestHeader set X-Request-Id %{UNIQUE_ID}e
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]+/(upload|download))$ balancer://backend$1
193 ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+)$ balancer://backend$1
194 ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+/(full|history|search|ways))$ balancer://backend$1
195 ProxyPass /api/0.6/nodes balancer://backend/api/0.6/nodes
196 ProxyPass /api/0.6/ways balancer://backend/api/0.6/ways
197 ProxyPass /api/0.6/relations balancer://backend/api/0.6/relations
198 ProxyPassMatch ^(/trace/[0-9]+/data(|/|.xml))$ balancer://backend$1
201 # Redirect trac and wiki requests to the right places
203 RedirectPermanent /trac/ http://trac.openstreetmap.org/
204 RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
207 # Redirect requests for various images to the right place
209 RedirectPermanent /images/osm_logo.png http://www.openstreetmap.org/assets/osm_logo.png
210 RedirectPermanent /images/cc_button.png http://www.openstreetmap.org/assets/cc_button.png
213 # Define a load balancer for the backends
215 <Proxy balancer://backend>
216 ProxySet lbmethod=bybusyness
217 <% if port == 443 -%>
218 BalancerMember https://rails1 disablereuse=on
219 BalancerMember https://rails2 disablereuse=on
220 BalancerMember https://rails3 disablereuse=on
222 BalancerMember http://rails1
223 BalancerMember http://rails2
224 BalancerMember http://rails3
230 # Redirect requests which should be secure to https
232 RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
233 RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
234 RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
235 RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
236 RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
237 RewriteCond %{REQUEST_URI} ^/user/reset-password$
238 RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
241 # Redirect api requests made to www.osm.org to api.osm.org
243 # RewriteCond %{HTTP_HOST} =www.openstreetmap.org
244 # RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
247 # Redirect non-api requests made to api.osm.org to www.osm.org
249 RewriteCond %{HTTP_HOST} =api.openstreetmap.org
250 RewriteCond %{REQUEST_URI} !^/api/
251 RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
252 <% elsif port == 443 -%>
255 # Redirect api requests made to www.osm.org to api.osm.org
257 # RewriteCond %{HTTP_HOST} =www.openstreetmap.org
258 # RewriteRule ^/api/(.*)$ https://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 ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
271 ServerName openstreetmap.org
272 ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
273 ServerAlias openstreetmap.com www.openstreetmap.com
274 ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
275 ServerAlias openstreetmap.net www.openstreetmap.net
276 ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
277 ServerAlias openstreetmap.ca www.openstreetmap.ca
278 ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
279 ServerAlias openstreetmap.eu www.openstreetmap.eu
280 ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
281 ServerAlias openstreetmap.pro www.openstreetmap.pro
282 ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
283 ServerAlias openstreetmaps.org www.openstreetmaps.org
284 ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
285 ServerAlias osm.org www.osm.org
286 ServerAlias maps.osm.org mapz.osm.org
287 ServerAlias openmaps.org www.openmaps.org
288 ServerAlias maps.openmaps.org mapz.openmaps.org
289 ServerAlias openstreetmap.io www.openstreetmap.io
290 ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
291 ServerAlias osm.io www.osm.io
292 ServerAlias maps.osm.io mapz.osm.io
293 ServerAlias openworldmap.org www.openworldmap.org
294 ServerAlias maps.openworldmap.org mapz.openworldmap.org
295 ServerAlias freeosm.org www.freeosm.org
296 ServerAlias maps.freeosm.org mapz.freeosm.org
297 ServerAlias open-maps.org www.open-maps.org
298 ServerAlias maps.open-maps.org mapz.open-maps.org
299 ServerAlias open-maps.com www.open-maps.com
300 ServerAlias maps.open-maps.com mapz.open-maps.com
301 ServerAlias osmbugs.org www.osmbugs.org
302 ServerAlias maps.osmbugs.org mapz.osmbugs.org
305 ServerAlias openstreetmap.pm www.openstreetmap.pm
307 RedirectPermanent / http://www.openstreetmap.org/
311 ServerName openstreetmap.org
312 ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
316 RedirectPermanent / https://www.openstreetmap.org/
320 ServerName openstreetmap.org.uk
321 ServerAlias www.openstreetmap.org.uk
322 ServerAlias openstreetmap.co.uk
323 ServerAlias www.openstreetmap.co.uk
325 RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
326 RedirectPermanent / http://www.openstreetmap.org/
329 <Directory <%= node[:web][:base_directory] %>/rails/public>
333 <Directory /srv/www.openstreetmap.org/rails/app/assets>
337 <Directory /srv/www.openstreetmap.org/rails/vendor/assets>
341 <Directory /store/rails/stats>
345 <Directory /store/rails/user/image>
349 <Directory /store/rails/attachments>