]> git.openstreetmap.org Git - chef.git/blob - cookbooks/web/templates/default/apache.frontend.erb
Use apache 2.4 style access controls
[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 <% if port == 443 -%>
197     BalancerMember https://rails1
198     BalancerMember https://rails2
199     BalancerMember https://rails3
200 <% else -%>
201     BalancerMember http://rails1
202     BalancerMember http://rails2
203     BalancerMember http://rails3
204 <% end -%>
205   </Proxy>
206 <% if port == 80 -%>
207
208   #
209   # Redirect requests which should be secure to https
210   #
211   RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
212   RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
213   RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
214   RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
215   RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
216   RewriteCond %{REQUEST_URI} ^/user/reset-password$
217   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
218
219   #
220   # Redirect api requests made to www.osm.org to api.osm.org
221   #
222 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
223 #  RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
224
225   #
226   # Redirect non-api requests made to api.osm.org to www.osm.org
227   #
228   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
229   RewriteCond %{REQUEST_URI} !^/api/
230   RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
231 <% elsif port == 443 -%>
232
233   #
234   # Redirect api requests made to www.osm.org to api.osm.org
235   #
236 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
237 #  RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
238
239   #
240   # Redirect non-api requests made to api.osm.org to www.osm.org
241   #
242   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
243   RewriteCond %{REQUEST_URI} !^/api/
244   RewriteRule ^(.*)$ https://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 openstreetmap.ca www.openstreetmap.ca
257   ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
258   ServerAlias openstreetmap.eu www.openstreetmap.eu
259   ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
260   ServerAlias openstreetmap.pro www.openstreetmap.pro
261   ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
262   ServerAlias openstreetmaps.org www.openstreetmaps.org
263   ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
264   ServerAlias osm.org www.osm.org
265   ServerAlias maps.osm.org mapz.osm.org
266   ServerAlias openmaps.org www.openmaps.org
267   ServerAlias maps.openmaps.org mapz.openmaps.org
268   ServerAlias openstreetmap.io www.openstreetmap.io
269   ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
270   ServerAlias osm.io www.osm.io
271   ServerAlias maps.osm.io mapz.osm.io
272   ServerAlias openworldmap.org www.openworldmap.org
273   ServerAlias maps.openworldmap.org mapz.openworldmap.org
274   ServerAlias freeosm.org www.freeosm.org
275   ServerAlias maps.freeosm.org mapz.freeosm.org
276   ServerAlias open-maps.org www.open-maps.org
277   ServerAlias maps.open-maps.org mapz.open-maps.org
278   ServerAlias open-maps.com www.open-maps.com
279   ServerAlias maps.open-maps.com mapz.open-maps.com
280   ServerAlias osmbugs.org www.osmbugs.org
281   ServerAlias maps.osmbugs.org mapz.osmbugs.org
282
283   #Third Party Sites
284   ServerAlias openstreetmap.pm www.openstreetmap.pm
285
286   RedirectPermanent / http://www.openstreetmap.org/
287 </VirtualHost>
288
289 <VirtualHost *:443>
290   ServerName openstreetmap.org
291   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
292
293   SSLEngine on
294
295   RedirectPermanent / https://www.openstreetmap.org/
296 </VirtualHost>
297
298 <VirtualHost *:80>
299   ServerName openstreetmap.org.uk
300   ServerAlias www.openstreetmap.org.uk
301   ServerAlias openstreetmap.co.uk
302   ServerAlias www.openstreetmap.co.uk
303
304   RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
305   RedirectPermanent / http://www.openstreetmap.org/
306 </VirtualHost>
307 <% if node[:lsb][:release].to_f >= 14.04 -%>
308
309 <Directory <%= node[:web][:base_directory] %>/rails/public>
310         Require all granted
311 </Directory>
312 <% end -%>