Synk fra arbeidsrepoet
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Vaultnord brand-proxy
|
||||
#
|
||||
# Ligger mellom Traefik og kundenes hvelv, og syr inn vår egen CSS, favicon og
|
||||
# en bunntekst med kildekodelenker - uten å røre Vaultwarden-imaget.
|
||||
#
|
||||
# Poenget er at oppgradering av hvelvene skal være å bytte en image-tag, ikke å
|
||||
# bygge en patchet web-vault på nytt. Alt vi legger til, legges til her.
|
||||
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
# Første ledd i vertsnavnet er kundens slug: ethica.vaultnord.no -> ethica
|
||||
map $host $tenant {
|
||||
default "";
|
||||
"~^(?<slug>[a-z0-9-]+)\.vaultnord\.no$" $slug;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
|
||||
# Vedlegg kan være store. Cloudflare stopper uansett på 100 MB i gratisplanen.
|
||||
client_max_body_size 128m;
|
||||
|
||||
# Docker sin interne DNS. Uten resolver kan vi ikke slå opp vw-<slug>
|
||||
# dynamisk, og nginx ville nektet å starte om en tenant var nede.
|
||||
resolver 127.0.0.11 valid=10s ipv6=off;
|
||||
|
||||
# Er hvelvet nede - stoppet, under oppdatering, eller kunden er satt på pause
|
||||
# - skal brukeren møte noe som forklarer, ikke nginx sin 502-side.
|
||||
error_page 502 503 504 =503 /_vaultnord/utilgjengelig.html;
|
||||
# Gjelder bare våre egne 404-er (ukjent vertsnavn). 404 fra hvelvet selv
|
||||
# slipper gjennom urørt - proxy_intercept_errors er av.
|
||||
error_page 404 /_vaultnord/ukjent.html;
|
||||
|
||||
location = /_vaultnord/health {
|
||||
access_log off;
|
||||
return 200 "ok\n";
|
||||
}
|
||||
|
||||
location /_vaultnord/ {
|
||||
alias /brand/;
|
||||
expires 1h;
|
||||
add_header Cache-Control "public";
|
||||
}
|
||||
|
||||
location / {
|
||||
if ($tenant = "") { return 404; }
|
||||
|
||||
proxy_pass http://vw-$tenant$request_uri;
|
||||
proxy_http_version 1.1;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
|
||||
|
||||
# Live-synk mellom klientene går over websocket.
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_read_timeout 3600s;
|
||||
|
||||
# sub_filter kan ikke røre en komprimert kropp. Vi ber om ukomprimert
|
||||
# fra hvelvet; Cloudflare komprimerer uansett ut mot brukeren.
|
||||
proxy_set_header Accept-Encoding "";
|
||||
|
||||
sub_filter_once on;
|
||||
sub_filter_types text/html;
|
||||
sub_filter '</head>'
|
||||
'<link rel="stylesheet" href="/_vaultnord/brand.css"><link rel="icon" href="/_vaultnord/favicon.png"></head>';
|
||||
sub_filter '</body>'
|
||||
'<div id="vaultnord-footer">Driftet av <a href="https://vaultnord.no">Vaultnord</a> · <a href="/_vaultnord/kilde.html">kildekode og lisens</a></div></body>';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user