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
22 LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %Ts" combined_with_time
23 CustomLog /var/log/apache2/access.log combined_with_time
24 ErrorLog /var/log/apache2/error.log
27 # Turn on various features
33 # Block troublesome GPX data scrapping
35 RewriteCond %{REQUEST_METHOD} HEAD
36 RewriteRule ^/trace/\d+/data - [F,L]
41 RewriteCond %{HTTP_USER_AGENT} tilesAtHome
45 # Block requests for the old 404 map tile
47 RewriteRule ^/openlayers/img/404.png$ - [G,L]
50 # Block attempts to access old API versions
52 RewriteRule ^/api/0.[12345]/ - [G,L]
55 # Block JOSM revisions 1722-1727 as they have a serious bug that causes
56 # lat/lon to be swapped (http://josm.openstreetmap.de/ticket/2804)
58 RewriteCond %{HTTP_USER_AGENT} "^JOSM/[0-9]+\.[0-9]+ \(172[234567]\)"
62 # Block a changeset that seems to lock things up
64 RewriteRule ^/api/0.6/changeset/6823497/download$ - [F,L]
67 # Force special MIME type for crossdomain.xml files
69 <Files crossdomain.xml>
70 ForceType text/x-cross-domain-policy
74 # Set expiry for assets
77 Header unset Last-Modified
81 ExpiresDefault "access plus 1 year"
85 # Set expiry for attachments
87 <Location /attachments/>
88 Header unset Last-Modified
92 ExpiresDefault "access plus 1 year"
96 # Set expiry for other static content
98 <Location /export/embed.html>
99 ExpiresDefault "access plus 7 days"
102 ExpiresDefault "access plus 10 years"
104 <Location /javascripts/>
105 ExpiresDefault "access plus 10 years"
107 <Location /openlayers/>
108 ExpiresDefault "access plus 7 days"
110 <Location /stylesheets/>
111 ExpiresDefault "access plus 10 years"
115 # Set expiry for Potlatch 1
117 <Location /potlatch/>
118 ExpiresDefault "access plus 7 days"
122 # Set expiry for Potlatch 2
124 <Location /potlatch2/>
125 ExpiresByType application/x-shockwave-flash "access plus 1 day"
126 ExpiresByType application/xml "access plus 1 day"
127 ExpiresByType text/css "access plus 1 day"
128 ExpiresByType image/png "access plus 7 days"
134 DocumentRoot <%= node[:web][:base_directory] %>/rails/public
136 PassengerMinInstances 10
137 PassengerMaxRequests 5000
138 PassengerPreStart http://www.openstreetmap.org/
139 Alias /favicon.ico <%= node[:web][:base_directory] %>/rails/app/assets/images/favicon.ico
140 Alias /openlayers <%= node[:web][:base_directory] %>/rails/vendor/assets/openlayers
141 Alias /stats /store/rails/stats
142 Alias /user/image /store/rails/user/image
143 Alias /attachments /store/rails/attachments
146 # Preserve the host name when forwarding to the proxy
151 # Set a long timeout - changeset uploads can take a long time
156 # Allow all proxy requests
163 # Pass some other API calls to the backends via a load balancer
165 ProxyPass /api/0.6/map balancer://backend/api/0.6/map
166 ProxyPass /api/0.6/tracepoints balancer://backend/api/0.6/tracepoints
167 ProxyPass /api/0.6/amf/read balancer://backend/api/0.6/amf/read
168 ProxyPass /api/0.6/swf/trackpoints balancer://backend/api/0.6/swf/trackpoints
169 ProxyPassMatch ^(/api/0\.6/changeset/[0-9]+/(upload|download))$ balancer://backend$1
170 ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+)$ balancer://backend$1
171 ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+/(full|history|search|ways))$ balancer://backend$1
172 ProxyPass /api/0.6/nodes balancer://backend/api/0.6/nodes
173 ProxyPass /api/0.6/ways balancer://backend/api/0.6/ways
174 ProxyPass /api/0.6/relations balancer://backend/api/0.6/relations
175 ProxyPassMatch ^(/trace/[0-9]+/data(|/|.xml))$ balancer://backend$1
178 # Redirect trac and wiki requests to the right places
180 RedirectPermanent /trac/ http://trac.openstreetmap.org/
181 RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
184 # Redirect requests for various images to the right place
186 RedirectPermanent /images/osm_logo.png http://www.openstreetmap.org/assets/osm_logo.png
187 RedirectPermanent /images/cc_button.png http://www.openstreetmap.org/assets/cc_button.png
190 # Define a load balancer for the backends
192 <Proxy balancer://backend>
193 ProxySet lbmethod=bybusyness
194 <% if port == 443 -%>
195 BalancerMember https://rails1
196 BalancerMember https://rails2
197 BalancerMember https://rails3
199 BalancerMember http://rails1
200 BalancerMember http://rails2
201 BalancerMember http://rails3
207 # Redirect requests which should be secure to https
209 RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
210 RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
211 RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
212 RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
213 RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
214 RewriteCond %{REQUEST_URI} ^/user/reset-password$
215 RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
218 # Redirect api requests made to www.osm.org to api.osm.org
220 # RewriteCond %{HTTP_HOST} =www.openstreetmap.org
221 # RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
224 # Redirect non-api requests made to api.osm.org to www.osm.org
226 RewriteCond %{HTTP_HOST} =api.openstreetmap.org
227 RewriteCond %{REQUEST_URI} !^/api/
228 RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
229 <% elsif port == 443 -%>
232 # Redirect requests which don't work over https to http
234 RewriteCond %{REQUEST_URI} ^/edit$
235 RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
238 # Redirect api requests made to www.osm.org to api.osm.org
240 # RewriteCond %{HTTP_HOST} =www.openstreetmap.org
241 # RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
244 # Redirect non-api requests made to api.osm.org to www.osm.org
246 RewriteCond %{HTTP_HOST} =api.openstreetmap.org
247 RewriteCond %{REQUEST_URI} !^/api/
248 RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
254 ServerName openstreetmap.org
255 ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
256 ServerAlias openstreetmap.com www.openstreetmap.com
257 ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
258 ServerAlias openstreetmap.net www.openstreetmap.net
259 ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
260 ServerAlias openstreetmap.ca www.openstreetmap.ca
261 ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
262 ServerAlias openstreetmap.eu www.openstreetmap.eu
263 ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
264 ServerAlias openstreetmap.pro www.openstreetmap.pro
265 ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
266 ServerAlias openstreetmaps.org www.openstreetmaps.org
267 ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
268 ServerAlias osm.org www.osm.org
269 ServerAlias maps.osm.org mapz.osm.org
270 ServerAlias openmaps.org www.openmaps.org
271 ServerAlias maps.openmaps.org mapz.openmaps.org
272 ServerAlias openstreetmap.io www.openstreetmap.io
273 ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
274 ServerAlias osm.io www.osm.io
275 ServerAlias maps.osm.io mapz.osm.io
276 ServerAlias openworldmap.org www.openworldmap.org
277 ServerAlias maps.openworldmap.org mapz.openworldmap.org
278 ServerAlias freeosm.org www.freeosm.org
279 ServerAlias maps.freeosm.org mapz.freeosm.org
280 ServerAlias open-maps.org www.open-maps.org
281 ServerAlias maps.open-maps.org mapz.open-maps.org
282 ServerAlias open-maps.com www.open-maps.com
283 ServerAlias maps.open-maps.com mapz.open-maps.com
286 ServerAlias openstreetmap.pm www.openstreetmap.pm
288 RedirectPermanent / http://www.openstreetmap.org/
292 ServerName openstreetmap.org
293 ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
297 RedirectPermanent / https://www.openstreetmap.org/
301 ServerName openstreetmap.org.uk
302 ServerAlias www.openstreetmap.org.uk
303 ServerAlias openstreetmap.co.uk
304 ServerAlias www.openstreetmap.co.uk
306 RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
307 RedirectPermanent / http://www.openstreetmap.org/