blob: 46eacb50a4ee95799175e4b9338c8de48cb4d121 [file] [log] [blame]
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +02001# Vorlage für die Auslieferung der ÄndGgner-Browserfassung. Es gibt keinen
2# Anwendungsprozess mehr: Der Server liefert nur statische Dateien aus
3# (Inhalt von target/web/), gerechnet wird im Browser.
Matthias Andreas Benkard7b455cd2026-08-09 08:33:37 +02004#
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +02005# Vor dem Einsatz anpassen: server_name, ssl_certificate(_key) (z. B. via certbot), root.
Matthias Andreas Benkard7b455cd2026-08-09 08:33:37 +02006
7server {
8 listen 80;
9 listen [::]:80;
10 server_name aendggner.example.org;
11 return 301 https://$host$request_uri;
12}
13
14server {
15 listen 443 ssl http2;
16 listen [::]:443 ssl http2;
17 server_name aendggner.example.org;
18
19 ssl_certificate /etc/letsencrypt/live/aendggner.example.org/fullchain.pem;
20 ssl_certificate_key /etc/letsencrypt/live/aendggner.example.org/privkey.pem;
21
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +020022 # Inhalt von target/web/ — ohne aendggner.js.wat, das nur ein Zwischenschritt
23 # des Übersetzers ist.
24 root /var/www/aendggner;
25 index index.html;
26
27 # Ohne diesen Typ lehnt der Browser die Streaming-Instanziierung des Moduls ab.
28 types {
29 application/wasm wasm;
30 }
31
32 gzip on;
33 gzip_types application/wasm application/javascript text/css text/html;
34 gzip_min_length 1024;
35
36 # Das Wasm-Modul ist einige Megabyte groß und ändert sich nur mit einer neuen
37 # Fassung; vorkomprimierte .gz/.br daneben zu legen lohnt sich (ngx_brotli bzw.
38 # gzip_static).
39 location ~ \.(wasm|js|css)$ {
40 expires 7d;
41 add_header Cache-Control "public";
42 }
Matthias Andreas Benkard7b455cd2026-08-09 08:33:37 +020043
44 location / {
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +020045 try_files $uri $uri/ =404;
Matthias Andreas Benkard7b455cd2026-08-09 08:33:37 +020046 }
47}