summaryrefslogtreecommitdiff
path: root/puppet/modules/site_static/templates/apache.conf.erb
blob: 7653491171a4043789121ea3f11716d57e4b3754 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<%-
  ##
  ## An apache config for static websites.
  ##
  def location_directory(name, location)
    if location['format'] == 'amber'
      File.join(@base_dir, name, 'public')
    else
      File.join(@base_dir, name)
    end
  end
  document_root = '/var/www'
  @locations.each do |name, location|
    if location['path'] == '/'
      document_root = location_directory(name, location)
    end
  end
-%>

<VirtualHost *:80>
  ServerName <%= @domain %>
  ServerAlias www.<%= @domain %>
  RewriteEngine On
  RewriteRule ^.*$ https://<%= @domain -%>%{REQUEST_URI} [R=permanent,L]
</VirtualHost>

<VirtualHost *:443>
  ServerName <%= @domain %>
  ServerAlias www.<%= @domain %>

  #RewriteLog "/var/log/apache2/rewrite.log"
  #RewriteLogLevel 3

  SSLEngine on
  SSLProtocol -all +SSLv3 +TLSv1
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!SSLv2:!MD5:@STRENGTH
  SSLHonorCipherOrder on

  Header add Strict-Transport-Security: "max-age=15768000;includeSubdomains"
  Header set X-Frame-Options "deny"

  SSLCertificateKeyFile    /etc/x509/keys/<%= @domain %>.key
  SSLCertificateFile       /etc/x509/certs/<%= @domain %>.crt
  SSLCertificateChainFile  /etc/ssl/certs/<%= @domain %>_ca.pem

  RequestHeader set X_FORWARDED_PROTO 'https'

  DocumentRoot <%= document_root %>

<%- @locations.each do |name, location| -%>
  ##
  ## <%= name %>
  ##
  <%- if location['path'] == '/' -%>
  # Location /
  <%- else -%>
  Alias <%= location['path'] %> <%= location_directory(name, location) %>
  <Location <%= location['path'] %>>
  <%- end -%>
    # remove trailing slashes
    RewriteEngine On
    RewriteRule ^(.+)/$ /$1 [R=301,L]

    # e.g. /de/blah => /blah/index.de.html
    RewriteCond %{DOCUMENT_ROOT}/$2/index.$1.html -f
    RewriteRule ^/([a-z]{2})/(.*) /$2/index.$1.html [L]

    # e.g. /de/foo/bar => /foo/bar.de.html
    RewriteCond %{DOCUMENT_ROOT}/$2.$1.html -f
    RewriteRule ^/([a-z]{2})/(.*) /$2.$1.html [L]

    # e.g. /de => /index.de.html
    RewriteCond %{DOCUMENT_ROOT}/index.$1.html -f
    RewriteRule ^/([a-z]{2})$ /index.$1.html [L]

    # e.g. /de/img.png => /img.png
    RewriteCond %{DOCUMENT_ROOT}/$2 -f
    RewriteRule ^/([a-z]{2})/(.*) /$2 [L]

    # Simulate "DirectorySlash On"
    # e.g. /foo/bar => /foo/bar/ (so that MultiViews will negotiate correct locale file)
    RewriteCond %{DOCUMENT_ROOT}/$1 -d
    RewriteRule ^/(.*[^/])$ /$1/ [PT]
  <%- if location['path'] == '/' -%>
  # end Location /
  <%- else -%>
  </Location>
  <%- end -%>
  <Directory <%= location_directory(name, location) %>>
    ##
    ## PERMISSIONS
    ##
    AllowOverride None
    Order deny,allow
    Allow from all

    ##
    ## LOCALE SUPPORT (e.g. index.en.html)
    ##
    LanguagePriority en
    ForceLanguagePriority Prefer Fallback
    DirectoryIndex index
    DirectorySlash Off
    Options +MultiViews
  </Directory>

<%- end -%>

</VirtualHost>