]> git.openstreetmap.org Git - chef.git/blob - cookbooks/web/templates/default/apache.frontend.erb
Revert "supybot: Add owl to watched repos" until supybot UTF-8 handling fixed
[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 <% end -%>
18
19   #
20   # Setup logging
21   #
22   LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %Ts" combined_with_time
23   CustomLog /var/log/apache2/access.log combined_with_time
24   ErrorLog /var/log/apache2/error.log
25
26   #
27   # Turn on various features
28   #
29   ExpiresActive On
30   RewriteEngine on
31
32   #
33   # Block troublesome GPX data scrapping
34   #
35   RewriteCond %{REQUEST_METHOD} HEAD
36   RewriteRule ^/trace/\d+/data - [F,L]
37
38   #
39   # Block tilesAtHome
40   #
41   RewriteCond %{HTTP_USER_AGENT} tilesAtHome
42   RewriteRule . - [F,L]
43
44   #
45   # Block requests for the old 404 map tile
46   #
47   RewriteRule ^/openlayers/img/404.png$ - [G,L]
48
49   #
50   # Block attempts to access old API versions
51   #
52   RewriteRule ^/api/0.[12345]/ - [G,L]
53
54   #
55   # Block JOSM revisions  1722-1727 as they have a serious bug that causes
56   # lat/lon to be swapped (http://josm.openstreetmap.de/ticket/2804)
57   #
58   RewriteCond %{HTTP_USER_AGENT} "^JOSM/[0-9]+\.[0-9]+ \(172[234567]\)"
59   RewriteRule . - [F,L]
60
61   #
62   # Block a changeset that seems to lock things up
63   #
64   RewriteRule ^/api/0.6/changeset/6823497/download$ - [F,L]
65
66   #
67   # Force special MIME type for crossdomain.xml files
68   #
69   <Files crossdomain.xml>
70     ForceType text/x-cross-domain-policy
71   </Files>
72
73   #
74   # Set expiry for assets
75   #
76   <Location /assets/>
77     Header unset Last-Modified
78     Header unset ETag
79     FileETag None
80
81     ExpiresDefault "access plus 1 year"
82   </Location>
83
84   #
85   # Set expiry for attachments
86   #
87   <Location /attachments/>
88     Header unset Last-Modified
89     Header unset ETag
90     FileETag None
91
92     ExpiresDefault "access plus 1 year"
93   </Location>
94
95   #
96   # Set expiry for other static content
97   #
98   <Location /export/embed.html>
99     ExpiresDefault "access plus 7 days"
100   </Location>
101   <Location /images/>
102     ExpiresDefault "access plus 10 years"
103   </Location>
104   <Location /javascripts/>
105     ExpiresDefault "access plus 10 years"
106   </Location>
107   <Location /openlayers/>
108     ExpiresDefault "access plus 7 days"
109   </Location>
110   <Location /stylesheets/>
111     ExpiresDefault "access plus 10 years"
112   </Location>
113
114   #
115   # Set expiry for Potlatch 1
116   #
117   <Location /potlatch/>
118     ExpiresDefault "access plus 7 days"
119   </Location>
120
121   #
122   # Set expiry for Potlatch 2
123   #
124   <Location /potlatch2/>
125     ExpiresByType application/x-shockwave-flash "access plus 1 day"
126     ExpiresByType application/xml "access plus 1 day"
127     ExpiresByType text/css "access plus 1 day"
128     ExpiresByType image/png "access plus 7 days"
129   </Location>
130
131   #
132   # Configure rails
133   #
134   DocumentRoot <%= node[:web][:base_directory] %>/rails/public
135   RailsEnv production
136   PassengerMinInstances 10
137   PassengerMaxRequests 5000
138   PassengerPreStart http://www.openstreetmap.org/
139   Alias /favicon.ico <%= node[:web][:base_directory] %>/rails/app/assets/images/favicon.ico
140   Alias /openlayers <%= node[:web][:base_directory] %>/rails/vendor/assets/openlayers
141   Alias /stats /store/rails/stats
142   Alias /user/image /store/rails/user/image
143   Alias /attachments /store/rails/attachments
144
145   #
146   # Preserve the host name when forwarding to the proxy
147   #
148   ProxyPreserveHost on
149
150   #
151   # Set a long timeout - changeset uploads can take a long time
152   #
153   ProxyTimeout 3600
154
155   #
156   # Allow all proxy requests
157   #
158   <Proxy *>
159     Allow from all
160   </Proxy>
161
162   #
163   # Pass other heavy duty API calls to the bulkapi backends via a load balancer
164   #
165   ProxyPass /api/0.6/map balancer://bulkapi/api/0.6/map
166   ProxyPass /api/0.6/tracepoints balancer://bulkapi/api/0.6/tracepoints
167   ProxyPass /api/0.6/amf/read balancer://bulkapi/api/0.6/amf/read
168   ProxyPass /api/0.6/swf/trackpoints balancer://bulkapi/api/0.6/swf/trackpoints
169   ProxyPassMatch ^(/api/0.6/changeset/[0-9]+/(upload|download))$ balancer://bulkapi$1
170   ProxyPassMatch ^(/api/0.6/.*/(full|history|search|ways))$ balancer://bulkapi$1
171   ProxyPass /api/0.6/nodes balancer://bulkapi/api/0.6/nodes
172   ProxyPass /api/0.6/ways balancer://bulkapi/api/0.6/ways
173   ProxyPassMatch ^(/trace/[0-9]+/data(|/|.xml))$ balancer://bulkapi$1
174
175   #
176   # Redirect trac and wiki requests to the right places
177   #
178   RedirectPermanent /trac/ http://trac.openstreetmap.org/
179   RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
180
181   #
182   # Redirect requests for various images to the right place
183   #
184   RedirectPermanent /images/osm_logo.png http://www.openstreetmap.org/assets/osm_logo.png
185   RedirectPermanent /images/cc_button.png http://www.openstreetmap.org/assets/cc_button.png
186
187   #
188   # Define a load balancer for the bulkapi backends
189   #
190   <Proxy balancer://bulkapi>
191     ProxySet lbmethod=bybusyness
192     BalancerMember http://rails1
193     BalancerMember http://rails2
194     BalancerMember http://rails3
195   </Proxy>
196 <% if port == 80 -%>
197
198   #
199   # Redirect requests which should be secure to the SSL site
200   #
201   RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
202   RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
203   RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
204   RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
205   RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
206   RewriteCond %{REQUEST_URI} ^/user/reset-password$
207   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
208
209   #
210   # Redirect api requests made to www.osm.org to api.osm.org
211   #
212 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
213 #  RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
214
215   #
216   # Redirect non-api requests made to api.osm.org to www.osm.org
217   #
218   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
219   RewriteCond %{REQUEST_URI} !^/api/
220   RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
221 <% elsif port == 443 -%>
222
223   #
224   # Redirect api requests to api.osm.org over http
225   #
226   RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
227
228   #
229   # Redirect requests which do not need to be secure over http
230   #
231   RewriteCond %{REQUEST_URI} !^/login(.html)?$
232   RewriteCond %{REQUEST_URI} !^/user/(new|create-account.html)$
233   RewriteCond %{REQUEST_URI} !^/user/terms$
234   RewriteCond %{REQUEST_URI} !^/user/save$
235   RewriteCond %{REQUEST_URI} !^/user/go_public$
236   RewriteCond %{REQUEST_URI} !^/user/([^/]+)/account$
237   RewriteCond %{REQUEST_URI} !^/user/reset-password$
238   RewriteCond %{REQUEST_URI} !^/preview/
239   RewriteCond %{REQUEST_URI} !^/assets/
240   RewriteCond %{REQUEST_URI} !^/javascripts/
241   RewriteCond %{REQUEST_URI} !^/images/
242   RewriteCond %{REQUEST_URI} !^/stylesheets/
243   RewriteCond %{REQUEST_URI} !^/openlayers/
244   RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
245 <% end -%>
246 </VirtualHost>
247
248 <% end -%>
249 <VirtualHost *:80>
250   ServerName openstreetmap.org
251   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
252   ServerAlias openstreetmap.com www.openstreetmap.com
253   ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
254   ServerAlias openstreetmap.net www.openstreetmap.net
255   ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
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 openworldmap.org www.openworldmap.org
263   ServerAlias maps.openworldmap.org mapz.openworldmap.org
264   ServerAlias freeosm.org www.freeosm.org
265   ServerAlias maps.freeosm.org mapz.freeosm.org
266
267   RedirectPermanent / http://www.openstreetmap.org/
268 </VirtualHost>
269
270 <VirtualHost *:80>
271   ServerName openstreetmap.org.uk
272   ServerAlias www.openstreetmap.org.uk
273   ServerAlias openstreetmap.co.uk
274   ServerAlias www.openstreetmap.co.uk
275
276   RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
277   RedirectPermanent / http://www.openstreetmap.org/
278 </VirtualHost>