aboutsummaryrefslogtreecommitdiff
path: root/deploy/nginx-aendggner.conf
blob: 46eacb50a4ee95799175e4b9338c8de48cb4d121 (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
# Vorlage für die Auslieferung der ÄndGgner-Browserfassung. Es gibt keinen
# Anwendungsprozess mehr: Der Server liefert nur statische Dateien aus
# (Inhalt von target/web/), gerechnet wird im Browser.
#
# Vor dem Einsatz anpassen: server_name, ssl_certificate(_key) (z. B. via certbot), root.

server {
    listen 80;
    listen [::]:80;
    server_name aendggner.example.org;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name aendggner.example.org;

    ssl_certificate     /etc/letsencrypt/live/aendggner.example.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/aendggner.example.org/privkey.pem;

    # Inhalt von target/web/ — ohne aendggner.js.wat, das nur ein Zwischenschritt
    # des Übersetzers ist.
    root /var/www/aendggner;
    index index.html;

    # Ohne diesen Typ lehnt der Browser die Streaming-Instanziierung des Moduls ab.
    types {
        application/wasm wasm;
    }

    gzip on;
    gzip_types application/wasm application/javascript text/css text/html;
    gzip_min_length 1024;

    # Das Wasm-Modul ist einige Megabyte groß und ändert sich nur mit einer neuen
    # Fassung; vorkomprimierte .gz/.br daneben zu legen lohnt sich (ngx_brotli bzw.
    # gzip_static).
    location ~ \.(wasm|js|css)$ {
        expires 7d;
        add_header Cache-Control "public";
    }

    location / {
        try_files $uri $uri/ =404;
    }
}