aboutsummaryrefslogtreecommitdiff
path: root/ansible/roles/horizon/templates/horizon.conf.j2
blob: 2f6380da2ecf7ba92491487428e914b689e0eaeb (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
{% if horizon_enable_tls_backend | bool %}
{% if kolla_base_distro in ['centos', 'rocky']  %}
LoadModule ssl_module /usr/lib64/httpd/modules/mod_ssl.so
{% else %}
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
{% endif %}
{% endif %}
Listen {{ api_interface_address | put_address_in_context('url') }}:{{ horizon_listen_port }}

ServerSignature Off
ServerTokens Prod
TraceEnable off

<VirtualHost {{ api_interface_address }}:{{ horizon_listen_port }}>
    LogLevel warn
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/kolla/horizon/horizon-error.log
    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
    CustomLog /var/log/kolla/horizon/horizon-access.log logformat

    WSGIScriptReloading On
    WSGIDaemonProcess horizon-http processes={{ horizon_wsgi_processes }} threads={{ horizon_wsgi_threads }} user=horizon group=horizon display-name=horizon
    WSGIProcessGroup horizon-http
    WSGIScriptAlias / /var/lib/kolla/venv/lib/python3/site-packages/openstack_dashboard/wsgi.py
    WSGIPassAuthorization On
    WSGIApplicationGroup %{GLOBAL}

    <Location "/">
        Require all granted
    </Location>

    <Location "/server-status">
        Require local
    </Location>

    Alias /static /var/lib/kolla/venv/lib/python3/site-packages/static
    <Location "/static">
        SetHandler None
    </Location>

{% if horizon_enable_tls_backend | bool %}
    SSLEngine On
    SSLCertificateFile /etc/horizon/certs/horizon-cert.pem
    SSLCertificateKeyFile /etc/horizon/certs/horizon-key.pem
{% endif %}
{% if horizon_httpd_limitrequestbody is defined %}
    LimitRequestBody {{ horizon_httpd_limitrequestbody }}
{% endif %}
</VirtualHost>

<IfModule mod_deflate.c>
    # Compress HTML, CSS, JavaScript, Json, Text, XML and fonts
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
    AddOutputFilterByType DEFLATE application/x-font
    AddOutputFilterByType DEFLATE application/x-font-opentype
    AddOutputFilterByType DEFLATE application/x-font-otf
    AddOutputFilterByType DEFLATE application/x-font-truetype
    AddOutputFilterByType DEFLATE application/x-font-ttf
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE font/opentype
    AddOutputFilterByType DEFLATE font/otf
    AddOutputFilterByType DEFLATE font/ttf
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE image/x-icon
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
</IfModule>

<IfModule mod_expires.c>
    <Filesmatch "\.(jpg|jpeg|png|gif|js|css|swf|ico|woff)$">
        ExpiresActive on
        ExpiresDefault "access plus 1 month"
        ExpiresByType application/javascript "access plus 1 year"
        ExpiresByType text/css "access plus 1 year"
        ExpiresByType image/x-ico "access plus 1 year"
        ExpiresByType image/jpg "access plus 1 year"
        ExpiresByType image/jpeg "access plus 1 year"
        ExpiresByType image/gif "access plus 1 year"
        ExpiresByType image/png "access plus 1 year"
        Header merge Cache-Control public
        Header unset ETag
    </Filesmatch>
</IfModule>