]> git.openstreetmap.org Git - chef.git/blob - cookbooks/web/templates/default/apache.frontend.erb
Ignore errors killing processes which may have already exited
[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   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
145
146   #
147   # Preserve the host name when forwarding to the proxy
148   #
149   ProxyPreserveHost on
150
151   #
152   # Set a long timeout - changeset uploads can take a long time
153   #
154   ProxyTimeout 3600
155
156   #
157   # Allow all proxy requests
158   #
159   <Proxy *>
160     Allow from all
161   </Proxy>
162
163   #
164   # Pass some other API calls to the backends via a load balancer
165   #
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
177
178   #
179   # Redirect trac and wiki requests to the right places
180   #
181   RedirectPermanent /trac/ http://trac.openstreetmap.org/
182   RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
183
184   #
185   # Redirect requests for various images to the right place
186   #
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
189
190   #
191   # Define a load balancer for the backends
192   #
193   <Proxy balancer://backend>
194     ProxySet lbmethod=bybusyness
195 <% if port == 443 -%>
196     BalancerMember https://rails1
197     BalancerMember https://rails2
198     BalancerMember https://rails3
199 <% else -%>
200     BalancerMember http://rails1
201     BalancerMember http://rails2
202     BalancerMember http://rails3
203 <% end -%>
204   </Proxy>
205 <% if port == 80 -%>
206
207   #
208   # Redirect requests which should be secure to https
209   #
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]
217
218   #
219   # Redirect api requests made to www.osm.org to api.osm.org
220   #
221 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
222 #  RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
223
224   #
225   # Redirect non-api requests made to api.osm.org to www.osm.org
226   #
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 -%>
231
232   #
233   # Redirect api requests made to www.osm.org to api.osm.org
234   #
235 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
236 #  RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
237
238   #
239   # Redirect non-api requests made to api.osm.org to www.osm.org
240   #
241   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
242   RewriteCond %{REQUEST_URI} !^/api/
243   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
244 <% end -%>
245 </VirtualHost>
246
247 <% end -%>
248 <VirtualHost *:80>
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
279
280   #Third Party Sites
281   ServerAlias openstreetmap.pm www.openstreetmap.pm
282
283   RedirectPermanent / http://www.openstreetmap.org/
284 </VirtualHost>
285
286 <VirtualHost *:443>
287   ServerName openstreetmap.org
288   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
289
290   SSLEngine on
291
292   RedirectPermanent / https://www.openstreetmap.org/
293 </VirtualHost>
294
295 <VirtualHost *:80>
296   ServerName openstreetmap.org.uk
297   ServerAlias www.openstreetmap.org.uk
298   ServerAlias openstreetmap.co.uk
299   ServerAlias www.openstreetmap.co.uk
300
301   RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
302   RedirectPermanent / http://www.openstreetmap.org/
303 </VirtualHost>