Remove 12.04 support in web cookbook
[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\" %Ts" 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   # Block troublesome GPX data scrapping
35   #
36   RewriteCond %{REQUEST_METHOD} HEAD
37   RewriteRule ^/trace/\d+/data - [F,L]
38
39   #
40   # Block tilesAtHome
41   #
42   RewriteCond %{HTTP_USER_AGENT} tilesAtHome
43   RewriteRule . - [F,L]
44
45   #
46   # Block requests for the old 404 map tile
47   #
48   RewriteRule ^/openlayers/img/404.png$ - [G,L]
49
50   #
51   # Block attempts to access old API versions
52   #
53   RewriteRule ^/api/0.[12345]/ - [G,L]
54
55   #
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)
58   #
59   RewriteCond %{HTTP_USER_AGENT} "^JOSM/[0-9]+\.[0-9]+ \(172[234567]\)"
60   RewriteRule . - [F,L]
61
62   #
63   # Block a changeset that seems to lock things up
64   #
65   RewriteRule ^/api/0.6/changeset/6823497/download$ - [F,L]
66
67   #
68   # Force special MIME type for crossdomain.xml files
69   #
70   <Files crossdomain.xml>
71     ForceType text/x-cross-domain-policy
72   </Files>
73
74   #
75   # Set expiry for assets
76   #
77   <Location /assets/>
78     Header unset Last-Modified
79     Header unset ETag
80     FileETag None
81
82     ExpiresDefault "access plus 1 year"
83   </Location>
84
85   #
86   # Set expiry for attachments
87   #
88   <Location /attachments/>
89     Header unset Last-Modified
90     Header unset ETag
91     FileETag None
92
93     ExpiresDefault "access plus 1 year"
94   </Location>
95
96   #
97   # Set expiry for other static content
98   #
99   <Location /export/embed.html>
100     ExpiresDefault "access plus 7 days"
101   </Location>
102   <Location /images/>
103     ExpiresDefault "access plus 10 years"
104   </Location>
105   <Location /javascripts/>
106     ExpiresDefault "access plus 10 years"
107   </Location>
108   <Location /openlayers/>
109     ExpiresDefault "access plus 7 days"
110   </Location>
111   <Location /stylesheets/>
112     ExpiresDefault "access plus 10 years"
113   </Location>
114
115   #
116   # Set expiry for Potlatch 1
117   #
118   <Location /potlatch/>
119     ExpiresDefault "access plus 7 days"
120   </Location>
121
122   #
123   # Set expiry for Potlatch 2
124   #
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"
130   </Location>
131
132   #
133   # Configure rails
134   #
135   DocumentRoot <%= node[:web][:base_directory] %>/rails/public
136   RailsEnv production
137   PassengerMinInstances 10
138   PassengerMaxRequests 5000
139   PassengerPreStart http://www.openstreetmap.org/
140   SetEnv SECRET_KEY_BASE <%= @secret_key_base %>
141   Alias /favicon.ico <%= node[:web][:base_directory] %>/rails/app/assets/images/favicon.ico
142   Alias /openlayers <%= node[:web][:base_directory] %>/rails/vendor/assets/openlayers
143   Alias /stats /store/rails/stats
144   Alias /user/image /store/rails/user/image
145   Alias /attachments /store/rails/attachments
146
147   #
148   # Preserve the host name when forwarding to the proxy
149   #
150   ProxyPreserveHost on
151
152   #
153   # Set a long timeout - changeset uploads can take a long time
154   #
155   ProxyTimeout 3600
156
157   #
158   # Allow all proxy requests
159   #
160   <Proxy *>
161     Allow from all
162   </Proxy>
163
164   #
165   # Pass some other API calls to the backends via a load balancer
166   #
167   ProxyPass /api/0.6/map balancer://backend/api/0.6/map
168   ProxyPass /api/0.6/tracepoints balancer://backend/api/0.6/tracepoints
169   ProxyPass /api/0.6/amf/read balancer://backend/api/0.6/amf/read
170   ProxyPass /api/0.6/swf/trackpoints balancer://backend/api/0.6/swf/trackpoints
171   ProxyPassMatch ^(/api/0\.6/changeset/[0-9]+/(upload|download))$ balancer://backend$1
172   ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+)$ balancer://backend$1
173   ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+/(full|history|search|ways))$ balancer://backend$1
174   ProxyPass /api/0.6/nodes balancer://backend/api/0.6/nodes
175   ProxyPass /api/0.6/ways balancer://backend/api/0.6/ways
176   ProxyPass /api/0.6/relations balancer://backend/api/0.6/relations
177   ProxyPassMatch ^(/trace/[0-9]+/data(|/|.xml))$ balancer://backend$1
178
179   #
180   # Redirect trac and wiki requests to the right places
181   #
182   RedirectPermanent /trac/ http://trac.openstreetmap.org/
183   RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
184
185   #
186   # Redirect requests for various images to the right place
187   #
188   RedirectPermanent /images/osm_logo.png http://www.openstreetmap.org/assets/osm_logo.png
189   RedirectPermanent /images/cc_button.png http://www.openstreetmap.org/assets/cc_button.png
190
191   #
192   # Define a load balancer for the backends
193   #
194   <Proxy balancer://backend>
195     ProxySet lbmethod=bybusyness
196     BalancerMember http://rails1
197     BalancerMember http://rails2
198     BalancerMember http://rails3
199   </Proxy>
200 <% if port == 80 -%>
201
202   #
203   # Redirect requests which should be secure to https
204   #
205   RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
206   RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
207   RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
208   RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
209   RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
210   RewriteCond %{REQUEST_URI} ^/user/reset-password$
211   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
212
213   #
214   # Redirect api requests made to www.osm.org to api.osm.org
215   #
216 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
217 #  RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
218
219   #
220   # Redirect non-api requests made to api.osm.org to www.osm.org
221   #
222   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
223   RewriteCond %{REQUEST_URI} !^/api/
224   RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
225 <% elsif port == 443 -%>
226
227   #
228   # Redirect api requests made to www.osm.org to api.osm.org
229   #
230 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
231 #  RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
232
233   #
234   # Redirect non-api requests made to api.osm.org to www.osm.org
235   #
236   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
237   RewriteCond %{REQUEST_URI} !^/api/
238   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
239 <% end -%>
240 </VirtualHost>
241
242 <% end -%>
243 <VirtualHost *:80>
244   ServerName openstreetmap.org
245   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
246   ServerAlias openstreetmap.com www.openstreetmap.com
247   ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
248   ServerAlias openstreetmap.net www.openstreetmap.net
249   ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
250   ServerAlias openstreetmap.ca www.openstreetmap.ca
251   ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
252   ServerAlias openstreetmap.eu www.openstreetmap.eu
253   ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
254   ServerAlias openstreetmap.pro www.openstreetmap.pro
255   ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
256   ServerAlias openstreetmaps.org www.openstreetmaps.org
257   ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
258   ServerAlias osm.org www.osm.org
259   ServerAlias maps.osm.org mapz.osm.org
260   ServerAlias openmaps.org www.openmaps.org
261   ServerAlias maps.openmaps.org mapz.openmaps.org
262   ServerAlias openstreetmap.io www.openstreetmap.io
263   ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
264   ServerAlias osm.io www.osm.io
265   ServerAlias maps.osm.io mapz.osm.io
266   ServerAlias openworldmap.org www.openworldmap.org
267   ServerAlias maps.openworldmap.org mapz.openworldmap.org
268   ServerAlias freeosm.org www.freeosm.org
269   ServerAlias maps.freeosm.org mapz.freeosm.org
270   ServerAlias open-maps.org www.open-maps.org
271   ServerAlias maps.open-maps.org mapz.open-maps.org
272   ServerAlias open-maps.com www.open-maps.com
273   ServerAlias maps.open-maps.com mapz.open-maps.com
274   ServerAlias osmbugs.org www.osmbugs.org
275   ServerAlias maps.osmbugs.org mapz.osmbugs.org
276
277   #Third Party Sites
278   ServerAlias openstreetmap.pm www.openstreetmap.pm
279
280   RedirectPermanent / http://www.openstreetmap.org/
281 </VirtualHost>
282
283 <VirtualHost *:443>
284   ServerName openstreetmap.org
285   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
286
287   SSLEngine on
288
289   RedirectPermanent / https://www.openstreetmap.org/
290 </VirtualHost>
291
292 <VirtualHost *:80>
293   ServerName openstreetmap.org.uk
294   ServerAlias www.openstreetmap.org.uk
295   ServerAlias openstreetmap.co.uk
296   ServerAlias www.openstreetmap.co.uk
297
298   RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
299   RedirectPermanent / http://www.openstreetmap.org/
300 </VirtualHost>
301
302 <Directory <%= node[:web][:base_directory] %>/rails/public>
303   Require all granted
304 </Directory>
305
306 <Directory /srv/www.openstreetmap.org/rails/app/assets>
307   Require all granted
308 </Directory>
309
310 <Directory /srv/www.openstreetmap.org/rails/vendor/assets>
311   Require all granted
312 </Directory>
313
314 <Directory /store/rails/stats>
315   Require all granted
316 </Directory>
317
318 <Directory /store/rails/user/image>
319   Require all granted
320 </Directory>
321
322 <Directory /store/rails/attachments>
323   Require all granted
324 </Directory>