Repository navigation
Expand file tree
/
Copy pathCaddyfile
More file actions
46 lines (44 loc) · 1.81 KB
/
Copy pathCaddyfile
File metadata and controls
46 lines (44 loc) · 1.81 KB
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
{$TUOTANTO_DOMAIN} {
# disable_http_challenge: portti 80 ei ole julkaistu hostiin (tarkoituksella —
# vain 443 auki), joten HTTP-01-haaste ei voisi koskaan onnistua. Ilman tätä
# Caddy yrittää http-01:tä oletuksena, epäonnistuu joka kerta, ja käyttää
# Let's Encryptin "failed authorizations" -rate limitin loppuun turhaan.
# TLS-ALPN-01 riittää yksinään — se kulkee jo julkaistun portin 443 kautta.
tls {
issuer acme {
disable_http_challenge
}
}
# Päivitys luo webui-kontin uudelleen (5–10 s katko): yhteyden muodostus
# yritetään uudelleen sekunnin välein 30 s ajan, joten lyhyt katko näkyy
# käyttäjälle vain hitaana latauksena eikä 502:na. Koskee vain yhteyden
# muodostusta (myös WebSocket-kättely) — muodostetut yhteydet eivät muutu.
reverse_proxy webui:12121 {
lb_try_duration 30s
lb_try_interval 1s
}
# Yli 30 s katko: huoltovastaus ilman ulkoisia resursseja (webui alhaalla →
# staattisetkaan tiedostot eivät tule). Ei Basic Authia (webui hoitaa sen),
# mutta vastaus ei sisällä dataa. haeJson tunnistaa 503:n ja odottaa.
handle_errors 502 503 504 {
header Retry-After 10
header Cache-Control no-store
@api path /api/*
handle @api {
header Content-Type application/json
respond `{"huolto": true, "detail": "Palvelua päivitetään"}` 503
}
handle {
header Content-Type "text/html; charset=utf-8"
respond `<!doctype html>
<html lang="fi"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="refresh" content="10">
<title>Palvelua päivitetään</title></head>
<body style="font-family: sans-serif; text-align: center; margin-top: 20vh; color: #333">
<h1>Palvelua päivitetään</h1>
<p>Sivu latautuu automaattisesti, kun palvelu on taas käytettävissä.</p>
</body></html>` 503
}
}
}