]> git.openstreetmap.org Git - chef.git/blob - cookbooks/web/templates/default/apache.frontend.erb
Revert "Take thorn-03 out of production"
[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   PassengerMaxRequestQueueSize 250
140 <% if port == 443 -%>
141   PassengerPreStart https://www.openstreetmap.org/
142 <% else -%>
143   PassengerPreStart http://www.openstreetmap.org/
144 <% end -%>
145   SetEnv SECRET_KEY_BASE <%= @secret_key_base %>
146   Alias /favicon.ico <%= node[:web][:base_directory] %>/rails/app/assets/images/favicon.ico
147   Alias /openlayers <%= node[:web][:base_directory] %>/rails/vendor/assets/openlayers
148   Alias /stats /store/rails/stats
149   Alias /user/image /store/rails/user/image
150   Alias /attachments /store/rails/attachments
151
152   #
153   # Preserve the host name when forwarding to the proxy
154   #
155   ProxyPreserveHost on
156
157   #
158   # Set a long timeout - changeset uploads can take a long time
159   #
160   ProxyTimeout 3600
161
162   #
163   # Allow all proxy requests
164   #
165   <Proxy *>
166     Allow from all
167   </Proxy>
168
169   #
170   # Pass some other API calls to the backends via a load balancer
171   #
172   ProxyPass /api/0.6/map balancer://backend/api/0.6/map
173   ProxyPass /api/0.6/tracepoints balancer://backend/api/0.6/tracepoints
174   ProxyPass /api/0.6/amf/read balancer://backend/api/0.6/amf/read
175   ProxyPass /api/0.6/swf/trackpoints balancer://backend/api/0.6/swf/trackpoints
176   ProxyPassMatch ^(/api/0\.6/changeset/[0-9]+/(upload|download))$ balancer://backend$1
177   ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+)$ balancer://backend$1
178   ProxyPassMatch ^(/api/0\.6/(node|way|relation)/[0-9]+/(full|history|search|ways))$ balancer://backend$1
179   ProxyPass /api/0.6/nodes balancer://backend/api/0.6/nodes
180   ProxyPass /api/0.6/ways balancer://backend/api/0.6/ways
181   ProxyPass /api/0.6/relations balancer://backend/api/0.6/relations
182   ProxyPassMatch ^(/trace/[0-9]+/data(|/|.xml))$ balancer://backend$1
183
184   #
185   # Redirect trac and wiki requests to the right places
186   #
187   RedirectPermanent /trac/ http://trac.openstreetmap.org/
188   RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
189
190   #
191   # Redirect requests for various images to the right place
192   #
193   RedirectPermanent /images/osm_logo.png http://www.openstreetmap.org/assets/osm_logo.png
194   RedirectPermanent /images/cc_button.png http://www.openstreetmap.org/assets/cc_button.png
195
196   #
197   # Define a load balancer for the backends
198   #
199   <Proxy balancer://backend>
200     ProxySet lbmethod=bybusyness
201 <% if port == 443 -%>
202     BalancerMember https://rails1 disablereuse=on
203     BalancerMember https://rails2 disablereuse=on
204     BalancerMember https://rails3 disablereuse=on
205 <% else -%>
206     BalancerMember http://rails1
207     BalancerMember http://rails2
208     BalancerMember http://rails3
209 <% end -%>
210   </Proxy>
211 <% if port == 80 -%>
212
213   #
214   # Redirect requests which should be secure to https
215   #
216   RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
217   RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
218   RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
219   RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
220   RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
221   RewriteCond %{REQUEST_URI} ^/user/reset-password$
222   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
223
224   #
225   # Redirect api requests made to www.osm.org to api.osm.org
226   #
227 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
228 #  RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
229
230   #
231   # Redirect non-api requests made to api.osm.org to www.osm.org
232   #
233   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
234   RewriteCond %{REQUEST_URI} !^/api/
235   RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
236 <% elsif port == 443 -%>
237
238   #
239   # Redirect api requests made to www.osm.org to api.osm.org
240   #
241 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
242 #  RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
243
244   #
245   # Redirect non-api requests made to api.osm.org to www.osm.org
246   #
247   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
248   RewriteCond %{REQUEST_URI} !^/api/
249   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
250 <% end -%>
251 </VirtualHost>
252
253 <% end -%>
254 <VirtualHost *:80>
255   ServerName openstreetmap.org
256   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
257   ServerAlias openstreetmap.com www.openstreetmap.com
258   ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
259   ServerAlias openstreetmap.net www.openstreetmap.net
260   ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
261   ServerAlias openstreetmap.ca www.openstreetmap.ca
262   ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
263   ServerAlias openstreetmap.eu www.openstreetmap.eu
264   ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
265   ServerAlias openstreetmap.pro www.openstreetmap.pro
266   ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
267   ServerAlias openstreetmaps.org www.openstreetmaps.org
268   ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
269   ServerAlias osm.org www.osm.org
270   ServerAlias maps.osm.org mapz.osm.org
271   ServerAlias openmaps.org www.openmaps.org
272   ServerAlias maps.openmaps.org mapz.openmaps.org
273   ServerAlias openstreetmap.io www.openstreetmap.io
274   ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
275   ServerAlias osm.io www.osm.io
276   ServerAlias maps.osm.io mapz.osm.io
277   ServerAlias openworldmap.org www.openworldmap.org
278   ServerAlias maps.openworldmap.org mapz.openworldmap.org
279   ServerAlias freeosm.org www.freeosm.org
280   ServerAlias maps.freeosm.org mapz.freeosm.org
281   ServerAlias open-maps.org www.open-maps.org
282   ServerAlias maps.open-maps.org mapz.open-maps.org
283   ServerAlias open-maps.com www.open-maps.com
284   ServerAlias maps.open-maps.com mapz.open-maps.com
285   ServerAlias osmbugs.org www.osmbugs.org
286   ServerAlias maps.osmbugs.org mapz.osmbugs.org
287
288   #Third Party Sites
289   ServerAlias openstreetmap.pm www.openstreetmap.pm
290
291   RedirectPermanent / http://www.openstreetmap.org/
292 </VirtualHost>
293
294 <VirtualHost *:443>
295   ServerName openstreetmap.org
296   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
297
298   SSLEngine on
299
300   RedirectPermanent / https://www.openstreetmap.org/
301 </VirtualHost>
302
303 <VirtualHost *:80>
304   ServerName openstreetmap.org.uk
305   ServerAlias www.openstreetmap.org.uk
306   ServerAlias openstreetmap.co.uk
307   ServerAlias www.openstreetmap.co.uk
308
309   RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
310   RedirectPermanent / http://www.openstreetmap.org/
311 </VirtualHost>
312
313 <Directory <%= node[:web][:base_directory] %>/rails/public>
314   Require all granted
315 </Directory>
316
317 <Directory /srv/www.openstreetmap.org/rails/app/assets>
318   Require all granted
319 </Directory>
320
321 <Directory /srv/www.openstreetmap.org/rails/vendor/assets>
322   Require all granted
323 </Directory>
324
325 <Directory /store/rails/stats>
326   Require all granted
327 </Directory>
328
329 <Directory /store/rails/user/image>
330   Require all granted
331 </Directory>
332
333 <Directory /store/rails/attachments>
334   Require all granted
335 </Directory>