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\" %Ts" 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 # Block troublesome GPX data scrapping
36 RewriteCond %{REQUEST_METHOD} HEAD
37 RewriteRule ^/trace/\d+/data - [F,L]
42 RewriteCond %{HTTP_USER_AGENT} tilesAtHome
46 # Block requests for the old 404 map tile
48 RewriteRule ^/openlayers/img/404.png$ - [G,L]
51 # Block attempts to access old API versions
53 RewriteRule ^/api/0.[12345]/ - [G,L]
56 # Block JOSM revisions 1722-1727 as they have a serious bug that causes
57 # lat/lon to be swapped (http://josm.openstreetmap.de/ticket/2804)
59 RewriteCond %{HTTP_USER_AGENT} "^JOSM/[0-9]+\.[0-9]+ \(172[234567]\)"
63 # Block a changeset that seems to lock things up
65 RewriteRule ^/api/0.6/changeset/6823497/download$ - [F,L]
68 # Force special MIME type for crossdomain.xml files
70 <Files crossdomain.xml>
71 ForceType text/x-cross-domain-policy
75 # Set expiry for assets
78 Header unset Last-Modified
82 ExpiresDefault "access plus 1 year"
86 # Set expiry for attachments
88 <Location /attachments/>
89 Header unset Last-Modified
93 ExpiresDefault "access plus 1 year"
97 # Set expiry for other static content
99 <Location /export/embed.html>
100 ExpiresDefault "access plus 7 days"
103 ExpiresDefault "access plus 10 years"
105 <Location /javascripts/>
106 ExpiresDefault "access plus 10 years"
108 <Location /openlayers/>
109 ExpiresDefault "access plus 7 days"
111 <Location /stylesheets/>
112 ExpiresDefault "access plus 10 years"
116 # Set expiry for Potlatch 1
118 <Location /potlatch/>
119 ExpiresDefault "access plus 7 days"
123 # Set expiry for Potlatch 2
125 <Location /potlatch2/>
126 ExpiresByType application/x-shockwave-flash "access plus 1 day"
127 ExpiresByType application/xml "access plus 1 day"
128 ExpiresByType text/css "access plus 1 day"
129 ExpiresByType image/png "access plus 7 days"
135 DocumentRoot <%= node[:web][:base_directory] %>/rails/public
137 PassengerMinInstances 10
138 PassengerMaxRequests 5000
139 PassengerPreStart http://www.openstreetmap.org/
140 Alias /favicon.ico <%= node[:web][:base_directory] %>/rails/app/assets/images/favicon.ico
141 Alias /openlayers <%= node[:web][:base_directory] %>/rails/vendor/assets/openlayers
142 Alias /stats /store/rails/stats
143 Alias /user/image /store/rails/user/image
144 Alias /attachments /store/rails/attachments
147 # Preserve the host name when forwarding to the proxy
152 # Set a long timeout - changeset uploads can take a long time
157 # Allow all proxy requests
164 # Pass some other API calls to the backends via a load balancer
166 ProxyPass /api/0.6/map balancer://backend/api/0.6/map
167 ProxyPass /api/0.6/tracepoints balancer://backend/api/0.6/tracepoints
168 ProxyPass /api/0.6/amf/read balancer://backend/api/0.6/amf/read
169 ProxyPass /api/0.6/swf/trackpoints balancer://backend/api/0.6/swf/trackpoints
170 ProxyPassMatch ^(/api/0\.6/changeset/[0-9]+/(upload|download))$ balancer://backend$1
171 ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+)$ balancer://backend$1
172 ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+/(full|history|search|ways))$ balancer://backend$1
173 ProxyPass /api/0.6/nodes balancer://backend/api/0.6/nodes
174 ProxyPass /api/0.6/ways balancer://backend/api/0.6/ways
175 ProxyPass /api/0.6/relations balancer://backend/api/0.6/relations
176 ProxyPassMatch ^(/trace/[0-9]+/data(|/|.xml))$ balancer://backend$1
179 # Redirect trac and wiki requests to the right places
181 RedirectPermanent /trac/ http://trac.openstreetmap.org/
182 RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
185 # Redirect requests for various images to the right place
187 RedirectPermanent /images/osm_logo.png http://www.openstreetmap.org/assets/osm_logo.png
188 RedirectPermanent /images/cc_button.png http://www.openstreetmap.org/assets/cc_button.png
191 # Define a load balancer for the backends
193 <Proxy balancer://backend>
194 ProxySet lbmethod=bybusyness
195 <% if port == 443 -%>
196 BalancerMember https://rails1
197 BalancerMember https://rails2
198 BalancerMember https://rails3
200 BalancerMember http://rails1
201 BalancerMember http://rails2
202 BalancerMember http://rails3
208 # Redirect requests which should be secure to https
210 RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
211 RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
212 RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
213 RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
214 RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
215 RewriteCond %{REQUEST_URI} ^/user/reset-password$
216 RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
219 # Redirect api requests made to www.osm.org to api.osm.org
221 # RewriteCond %{HTTP_HOST} =www.openstreetmap.org
222 # RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
225 # Redirect non-api requests made to api.osm.org to www.osm.org
227 RewriteCond %{HTTP_HOST} =api.openstreetmap.org
228 RewriteCond %{REQUEST_URI} !^/api/
229 RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
230 <% elsif port == 443 -%>
233 # Redirect api requests made to www.osm.org to api.osm.org
235 # RewriteCond %{HTTP_HOST} =www.openstreetmap.org
236 # RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
239 # Redirect non-api requests made to api.osm.org to www.osm.org
241 RewriteCond %{HTTP_HOST} =api.openstreetmap.org
242 RewriteCond %{REQUEST_URI} !^/api/
243 RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
249 ServerName openstreetmap.org
250 ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
251 ServerAlias openstreetmap.com www.openstreetmap.com
252 ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
253 ServerAlias openstreetmap.net www.openstreetmap.net
254 ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
255 ServerAlias openstreetmap.ca www.openstreetmap.ca
256 ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
257 ServerAlias openstreetmap.eu www.openstreetmap.eu
258 ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
259 ServerAlias openstreetmap.pro www.openstreetmap.pro
260 ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
261 ServerAlias openstreetmaps.org www.openstreetmaps.org
262 ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
263 ServerAlias osm.org www.osm.org
264 ServerAlias maps.osm.org mapz.osm.org
265 ServerAlias openmaps.org www.openmaps.org
266 ServerAlias maps.openmaps.org mapz.openmaps.org
267 ServerAlias openstreetmap.io www.openstreetmap.io
268 ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
269 ServerAlias osm.io www.osm.io
270 ServerAlias maps.osm.io mapz.osm.io
271 ServerAlias openworldmap.org www.openworldmap.org
272 ServerAlias maps.openworldmap.org mapz.openworldmap.org
273 ServerAlias freeosm.org www.freeosm.org
274 ServerAlias maps.freeosm.org mapz.freeosm.org
275 ServerAlias open-maps.org www.open-maps.org
276 ServerAlias maps.open-maps.org mapz.open-maps.org
277 ServerAlias open-maps.com www.open-maps.com
278 ServerAlias maps.open-maps.com mapz.open-maps.com
281 ServerAlias openstreetmap.pm www.openstreetmap.pm
283 RedirectPermanent / http://www.openstreetmap.org/
287 ServerName openstreetmap.org
288 ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
292 RedirectPermanent / https://www.openstreetmap.org/
296 ServerName openstreetmap.org.uk
297 ServerAlias www.openstreetmap.org.uk
298 ServerAlias openstreetmap.co.uk
299 ServerAlias www.openstreetmap.co.uk
301 RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
302 RedirectPermanent / http://www.openstreetmap.org/