gateway: service modules declare their vhost under gateway.vhosts
Ten service modules (forge, matrix chat, authelia, grafana, otel, nats, swarm-ui, victorialogs, victoriametrics, bao UI) wrote services.nginx.virtualHosts themselves, each applying the gateway's listen set, per-name TLS attrs and security headers by hand. They now declare services.hyperhive.gateway.vhosts.<name> with only their own locations and options; ./declared-vhosts.nix renders it into the nginx vhost with listen, TLS and headers added. An eval assertion refuses a declared vhost that sets listen, addSSL, onlySSL, enableACME, useACMEHost, sslCertificate or sslCertificateKey, and one declared while the gateway is off. nats' own leaf is the new `certificate` field. The rendered nginx vhosts are unchanged.
This commit is contained in:
parent
7b50ae57e4
commit
ddb583cc22
17 changed files with 652 additions and 513 deletions
|
|
@ -2,18 +2,17 @@
|
|||
# attrs, and the security headers every vhost in front of this gateway
|
||||
# needs.
|
||||
#
|
||||
# Split out of ./vhosts.nix so it has one home and two consumers. Today
|
||||
# only ./vhosts.nix reads it; it is published as
|
||||
# `services.hyperhive.gateway.lib` (see ./options.nix) so a service
|
||||
# module can declare its OWN vhost without the gateway having to know
|
||||
# that service by name. `vhosts.nix` reads the published value rather
|
||||
# than calling this file directly — one source, not a copy that agrees
|
||||
# by inspection.
|
||||
# Split out of ./vhosts.nix so it has one home and several consumers.
|
||||
# ./vhosts.nix and ./declared-vhosts.nix (which renders the vhosts service
|
||||
# modules declare under `gateway.vhosts`) read it through
|
||||
# `services.hyperhive.gateway.lib` (see ./options.nix) rather than calling
|
||||
# this file directly — one source, not a copy that agrees by inspection. A
|
||||
# service module reads `verifiedProxyTo`, `errorPages` and `securityHeaders`
|
||||
# from there for the locations it writes.
|
||||
#
|
||||
# Pure function of the gateway's config + resolved cert paths; returns
|
||||
# an attrset, evaluates no options itself. Everything here is *gateway*
|
||||
# knowledge — which port pair to bind, which issuer covers a name — and
|
||||
# stays here even once the service vhosts move out to their own modules.
|
||||
# knowledge — which port pair to bind, which issuer covers a name.
|
||||
{
|
||||
lib,
|
||||
cfg, # services.hyperhive.gateway
|
||||
|
|
|
|||
Loading…
Reference in a new issue