51 lines
1.1 KiB
Nix
51 lines
1.1 KiB
Nix
|
{ lib, ... }:
|
||
|
|
||
|
{
|
||
|
lib = { config, ... }: with config.nginx; {
|
||
|
nginx = {
|
||
|
inherit (config.meta) domain;
|
||
|
|
||
|
mappers = {
|
||
|
|
||
|
mapSubdomains = with lib; mapAttrs' (k: nameValuePair "${k}.${domain}");
|
||
|
|
||
|
};
|
||
|
|
||
|
vhosts = with vhosts; {
|
||
|
|
||
|
basic = {
|
||
|
forceSSL = true;
|
||
|
enableACME = true;
|
||
|
};
|
||
|
|
||
|
redirect = target: basic // {
|
||
|
locations."/".return = "301 ${target}";
|
||
|
};
|
||
|
|
||
|
proxy = target: basic // {
|
||
|
locations."/".proxyPass = target;
|
||
|
};
|
||
|
|
||
|
static = root: basic // {
|
||
|
inherit root;
|
||
|
};
|
||
|
|
||
|
indexedStatic = root: (static root) // {
|
||
|
extraConfig = "autoindex on;";
|
||
|
};
|
||
|
|
||
|
proxyGhost = scheme: target: basic // {
|
||
|
locations."/".extraConfig = ''
|
||
|
proxy_pass ${scheme}://${target};
|
||
|
proxy_set_header Host ${target};
|
||
|
proxy_set_header Referer ${scheme}://${target};
|
||
|
proxy_cookie_domain ${target} domain.invalid;
|
||
|
proxy_set_header Cookie "";
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
|