]> git.openstreetmap.org Git - chef.git/blob - cookbooks/web/templates/default/apache.frontend.erb
ff014632566aea1f01b9863382931054688682a3
[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   # Pass supported calls to cgimap
149   #
150   RewriteRule ^/api/0\.6/map$ fcgi://127.0.0.1:8000$0 [P]
151   RewriteCond %{REQUEST_METHOD} ^(HEAD|GET)$
152   RewriteRule ^/api/0\.6/(node|way|relation)/[0-9]+$ fcgi://127.0.0.1:8000$0 [P]
153   RewriteRule ^/api/0\.6/(way|relation)/[0-9]+/full$ fcgi://127.0.0.1:8000$0 [P]
154   RewriteRule ^/api/0\.6/(nodes|ways|relations)$ fcgi://127.0.0.1:8000$0 [P]
155
156   #
157   # Redirect trac and wiki requests to the right places
158   #
159   RedirectPermanent /trac/ http://trac.openstreetmap.org/
160   RedirectPermanent /wiki/ http://wiki.openstreetmap.org/
161
162   #
163   # Redirect requests for various images to the right place
164   #
165   RedirectPermanent /images/osm_logo.png http://www.openstreetmap.org/assets/osm_logo.png
166   RedirectPermanent /images/cc_button.png http://www.openstreetmap.org/assets/cc_button.png
167 <% if port == 80 -%>
168
169   #
170   # Redirect requests which should be secure to https
171   #
172   RewriteCond %{REQUEST_URI} ^/login(\.html)?$ [OR]
173   RewriteCond %{REQUEST_URI} ^/user/(new|create-account\.html)$ [OR]
174   RewriteCond %{REQUEST_URI} ^/user/terms$ [OR]
175   RewriteCond %{REQUEST_URI} ^/user/save$ [OR]
176   RewriteCond %{REQUEST_URI} ^/user/([^/]+)/account$ [OR]
177   RewriteCond %{REQUEST_URI} ^/user/reset-password$
178   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
179
180   #
181   # Redirect api requests made to www.osm.org to api.osm.org
182   #
183 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
184 #  RewriteRule ^/api/(.*)$ http://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
185
186   #
187   # Redirect non-api requests made to api.osm.org to www.osm.org
188   #
189   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
190   RewriteCond %{REQUEST_URI} !^/api/
191   RewriteRule ^(.*)$ http://www.openstreetmap.org$1 [L,NE,R=permanent]
192 <% elsif port == 443 -%>
193
194   #
195   # Redirect api requests made to www.osm.org to api.osm.org
196   #
197 #  RewriteCond %{HTTP_HOST} =www.openstreetmap.org
198 #  RewriteRule ^/api/(.*)$ https://api.openstreetmap.org/api/$1 [L,NE,R=permanent]
199
200   #
201   # Redirect non-api requests made to api.osm.org to www.osm.org
202   #
203   RewriteCond %{HTTP_HOST} =api.openstreetmap.org
204   RewriteCond %{REQUEST_URI} !^/api/
205   RewriteRule ^(.*)$ https://www.openstreetmap.org$1 [L,NE,R=permanent]
206 <% end -%>
207 </VirtualHost>
208
209 <% end -%>
210 <VirtualHost *:80>
211   ServerName openstreetmap.org
212   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
213   ServerAlias openstreetmap.com www.openstreetmap.com
214   ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
215   ServerAlias openstreetmap.net www.openstreetmap.net
216   ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
217   ServerAlias openstreetmap.ca www.openstreetmap.ca
218   ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
219   ServerAlias openstreetmap.eu www.openstreetmap.eu
220   ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
221   ServerAlias openstreetmap.pro www.openstreetmap.pro
222   ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
223   ServerAlias openstreetmaps.org www.openstreetmaps.org
224   ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
225   ServerAlias osm.org www.osm.org
226   ServerAlias maps.osm.org mapz.osm.org
227   ServerAlias openmaps.org www.openmaps.org
228   ServerAlias maps.openmaps.org mapz.openmaps.org
229   ServerAlias openstreetmap.io www.openstreetmap.io
230   ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
231   ServerAlias osm.io www.osm.io
232   ServerAlias maps.osm.io mapz.osm.io
233   ServerAlias openworldmap.org www.openworldmap.org
234   ServerAlias maps.openworldmap.org mapz.openworldmap.org
235   ServerAlias freeosm.org www.freeosm.org
236   ServerAlias maps.freeosm.org mapz.freeosm.org
237   ServerAlias open-maps.org www.open-maps.org
238   ServerAlias maps.open-maps.org mapz.open-maps.org
239   ServerAlias open-maps.com www.open-maps.com
240   ServerAlias maps.open-maps.com mapz.open-maps.com
241   ServerAlias osmbugs.org www.osmbugs.org
242   ServerAlias maps.osmbugs.org mapz.osmbugs.org
243
244   #Third Party Sites
245   ServerAlias openstreetmap.pm www.openstreetmap.pm
246
247   RedirectPermanent / http://www.openstreetmap.org/
248 </VirtualHost>
249
250 <VirtualHost *:443>
251   ServerName openstreetmap.org
252   ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
253
254   SSLEngine on
255
256   RedirectPermanent / https://www.openstreetmap.org/
257 </VirtualHost>
258
259 <VirtualHost *:80>
260   ServerName openstreetmap.org.uk
261   ServerAlias www.openstreetmap.org.uk
262   ServerAlias openstreetmap.co.uk
263   ServerAlias www.openstreetmap.co.uk
264
265   RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
266   RedirectPermanent / http://www.openstreetmap.org/
267 </VirtualHost>
268
269 <Directory <%= node[:web][:base_directory] %>/rails/public>
270   Require all granted
271 </Directory>
272
273 <Directory /srv/www.openstreetmap.org/rails/app/assets>
274   Require all granted
275 </Directory>
276
277 <Directory /srv/www.openstreetmap.org/rails/vendor/assets>
278   Require all granted
279 </Directory>
280
281 <Directory /store/rails/stats>
282   Require all granted
283 </Directory>
284
285 <Directory /store/rails/user/image>
286   Require all granted
287 </Directory>
288
289 <Directory /store/rails/attachments>
290   Require all granted
291 </Directory>