]> git.openstreetmap.org Git - chef.git/blob - cookbooks/web/templates/default/apache.frontend.erb
Enable gzip compression of SVG assets
[chef.git] / cookbooks / web / templates / default / apache.frontend.erb
1 # DO NOT EDIT - This file is being maintained by Chef
2
3 <% [80, 443].each do |port| -%>
4 <VirtualHost *:<%= port %>>
5   #
6   # Basic server configuration
7   #
8   ServerName <%= node[:fqdn] %>
9   ServerAlias api.openstreetmap.org www.openstreetmap.org
10   ServerAdmin webmaster@openstreetmap.org
11 <% if port == 443 -%>
12
13   #
14   # Enable SSL
15   #
16   SSLEngine on
17   SSLProxyEngine on
18 <% end -%>
19
20   #
21   # Setup logging
22   #
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
26
27   #
28   # Turn on various features
29   #
30   ExpiresActive On
31   RewriteEngine on
32
33   #
34   # Configure on the fly compression
35   #
36   AddOutputFilterByType DEFLATE image/svg+xml
37
38   #
39   # Add the unique ID to the request headers
40   #
41   RequestHeader set X-Request-Id %{UNIQUE_ID}e
42
43   #
44   # Block troublesome GPX data scrapping
45   #
46   RewriteCond %{REQUEST_METHOD} HEAD
47   RewriteRule ^/trace/\d+/data - [F,L]
48
49   #
50   # Block tilesAtHome
51   #
52   RewriteCond %{HTTP_USER_AGENT} tilesAtHome
53   RewriteRule . - [F,L]
54
55   #
56   # Block changeset scraper
57   #
58   RewriteCond %{HTTP_USER_AGENT} "OSMApp Tuner"
59   RewriteRule . - [F,L]  
60
61   #
62   # Block requests for the old 404 map tile
63   #
64   RewriteRule ^/openlayers/img/404.png$ - [G,L]
65
66   #
67   # Block attempts to access old API versions
68   #
69   RewriteRule ^/api/0.[12345]/ - [G,L]
70
71   #
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)
74   #
75   RewriteCond %{HTTP_USER_AGENT} "^JOSM/[0-9]+\.[0-9]+ \(172[234567]\)"
76   RewriteRule . - [F,L]
77
78   #
79   # Block a changeset that seems to lock things up
80   #
81   RewriteRule ^/api/0.6/changeset/6823497/download$ - [F,L]
82
83   #
84   # Force special MIME type for crossdomain.xml files
85   #
86   <Files crossdomain.xml>
87     ForceType text/x-cross-domain-policy
88   </Files>
89
90   #
91   # Set expiry for assets
92   #
93   <Location /assets/>
94     Header unset Last-Modified
95     Header unset ETag
96     FileETag None
97
98     ExpiresDefault "access plus 1 year"
99   </Location>
100
101   #
102   # Set expiry for attachments
103   #
104   <Location /attachments/>
105     Header unset Last-Modified
106     Header unset ETag
107     FileETag None
108
109     ExpiresDefault "access plus 1 year"
110   </Location>
111
112   #
113   # Set expiry for other static content
114   #
115   <Location /export/embed.html>
116     ExpiresDefault "access plus 7 days"
117   </Location>
118   <Location /images/>
119     ExpiresDefault "access plus 10 years"
120   </Location>
121   <Location /javascripts/>
122     ExpiresDefault "access plus 10 years"
123   </Location>
124   <Location /openlayers/>
125     ExpiresDefault "access plus 7 days"
126   </Location>
127   <Location /stylesheets/>
128     ExpiresDefault "access plus 10 years"
129   </Location>
130
131   #
132   # Set expiry for Potlatch 1
133   #
134   <Location /potlatch/>
135     ExpiresDefault "access plus 7 days"
136   </Location>
137
138   #
139   # Set expiry for Potlatch 2
140   #
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"
146   </Location>
147
148   #
149   # Configure rails
150   #
151   DocumentRoot <%= node[:web][:base_directory] %>/rails/public
152   RailsEnv production
153   PassengerMinInstances 10
154   PassengerMaxRequests 5000
155   PassengerMaxRequestQueueSize 250
156 <% if port == 443 -%>
157   PassengerPreStart https://www.openstreetmap.org/
158 <% else -%>
159   PassengerPreStart http://www.openstreetmap.org/
160 <% end -%>
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
167
168   #
169   # Preserve the host name when forwarding to the proxy
170   #
171   ProxyPreserveHost on
172
173   #
174   # Set a long timeout - changeset uploads can take a long time
175   #
176   ProxyTimeout 3600
177
178   #
179   # Allow all proxy requests
180   #
181   <Proxy *>
182     Allow from all
183   </Proxy>
184
185   #
186   # Pass some other API calls to the backends via a load balancer
187   #
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
199
200   #
201   # Redirect trac and wiki requests to the right places
202   #
203   RedirectPermanent /trac/ http://trac.openstreetmap.org/
204   RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
205
206   #
207   # Redirect requests for various images to the right place
208   #
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
211
212   #
213   # Define a load balancer for the backends
214   #
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
221 <% else -%>
222     BalancerMember http://rails1
223     BalancerMember http://rails2
224     BalancerMember http://rails3
225 <% end -%>
226   </Proxy>
227 <% if port == 80 -%>
228
229   #
230   # Redirect requests which should be secure to https
231   #
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]
239
240   #
241   # Redirect api requests made to www.osm.org to api.osm.org
242   #
243 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
244 #  RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
245
246   #
247   # Redirect non-api requests made to api.osm.org to www.osm.org
248   #
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 -%>
253
254   #
255   # Redirect api requests made to www.osm.org to api.osm.org
256   #
257 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
258 #  RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
259
260   #
261   # Redirect non-api requests made to api.osm.org to www.osm.org
262   #
263   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
264   RewriteCond %{REQUEST_URI} !^/api/
265   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
266 <% end -%>
267 </VirtualHost>
268
269 <% end -%>
270 <VirtualHost *:80>
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
303
304   #Third Party Sites
305   ServerAlias openstreetmap.pm www.openstreetmap.pm
306
307   RedirectPermanent / http://www.openstreetmap.org/
308 </VirtualHost>
309
310 <VirtualHost *:443>
311   ServerName openstreetmap.org
312   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
313
314   SSLEngine on
315
316   RedirectPermanent / https://www.openstreetmap.org/
317 </VirtualHost>
318
319 <VirtualHost *:80>
320   ServerName openstreetmap.org.uk
321   ServerAlias www.openstreetmap.org.uk
322   ServerAlias openstreetmap.co.uk
323   ServerAlias www.openstreetmap.co.uk
324
325   RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
326   RedirectPermanent / http://www.openstreetmap.org/
327 </VirtualHost>
328
329 <Directory <%= node[:web][:base_directory] %>/rails/public>
330   Require all granted
331 </Directory>
332
333 <Directory /srv/www.openstreetmap.org/rails/app/assets>
334   Require all granted
335 </Directory>
336
337 <Directory /srv/www.openstreetmap.org/rails/vendor/assets>
338   Require all granted
339 </Directory>
340
341 <Directory /store/rails/stats>
342   Require all granted
343 </Directory>
344
345 <Directory /store/rails/user/image>
346   Require all granted
347 </Directory>
348
349 <Directory /store/rails/attachments>
350   Require all granted
351 </Directory>