Nginx on lambda-nebula.funktionaali.com

nixpkgs.version: 26.11.20260926.e158d9e
system.stateVersion: 25.11

Nginx config:

{
  upstreams = {
    grafana = {
      extraConfig = "";
      servers = {
        "127.0.0.1:8982" = {
          backup = false;
        };
      };
    };
    harmonia = {
      extraConfig = "";
      servers = {
        "unix:/run/harmonia/socket" = {
          backup = false;
        };
      };
    };
    influxdb2 = {
      extraConfig = "";
      servers = {
        "127.0.0.1:8086" = {
          backup = false;
        };
      };
    };
    prometheus = {
      extraConfig = "";
      servers = {
        "127.0.0.1:9090" = {
          backup = false;
        };
      };
    };
    rtorrent-ps = {
      extraConfig = "";
      servers = {
        "unix:/home/sim/rtorrent-ps/.scgi_local" = {
          backup = false;
        };
      };
    };
    scrutiny = {
      extraConfig = "";
      servers = {
        "127.0.0.1:6700" = {
          backup = false;
        };
      };
    };
  };
  virtualHosts = {
    "lambda-nebula.funktionaali.com" = {
      acmeFallbackHost = null;
      acmeRoot = null;
      addSSL = true;
      basicAuth = { };
      basicAuthFile = null;
      default = true;
      enableACME = true;
      extraConfig = ''
        ssl_stapling off;
        ssl_stapling_verify off;
      '';
      forceSSL = false;
      globalRedirect = null;
      http2 = true;
      http3 = true;
      http3_hq = false;
      kTLS = true;
      listen = [ ];
      listenAddresses = [ ];
      locations = {
        "/" = {
          root = "<info-root>";
        };
        "= /influx/env.js" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = null;
          extraConfig = "add_header Content-Type application/javascript;";
          fastcgiParams = { };
          index = null;
          priority = 1000;
          proxyPass = null;
          proxySSEs = false;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = "200 \"var prefix='/influx/'; process={'env':{'STATIC_PREFIX':prefix,'API_PREFIX':prefix,'BASE_PATH':prefix,'API_BASE_PATH':prefix}};\"";
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
        "^~ /grafana/" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = null;
          extraConfig = "";
          fastcgiParams = { };
          index = null;
          priority = 350;
          proxyPass = "http://grafana";
          proxySSEs = false;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
        "^~ /grafana/api/live/" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = null;
          extraConfig = ''
            
          '';
          fastcgiParams = { };
          index = null;
          priority = 350;
          proxyPass = "http://grafana";
          proxySSEs = false;
          proxyWebsockets = true;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
        "^~ /influx/" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = "/etc/nginx/.htpasswd";
          extraConfig = ''
            # required auth if not local
            satisfy any;
            allow 127.0.0.1;
            allow 10.0.0.0/8;
            allow 192.168.0.0/16;
            allow 172.16.0.0/12;
            allow ::1;
            allow fc00::/7;
            allow fe80::/10;
            # Telematica/ipv6
            allow 2a01:aea0:dd3:2aa::/64;
            deny all;
            
            rewrite ^/influx$ /influx/ permanent;
            rewrite ^/influx/(.*) /$1 break;
            #proxy_redirect / /influx/;
            proxy_cookie_path ~*^/api /influx/api;
            proxy_set_header Accept-Encoding "";
            # inject environment vars for front-end webpack
            sub_filter '</head>' '<script type="text/javascript" src="/influx/env.js"></script></head>';
            # monkey patch html things...
            sub_filter '<base href="/">' '<base href="/influx/">';
            sub_filter 'src="/' 'src="/influx/';
            sub_filter 'href="/' 'href="/influx/';
            sub_filter 'data-basepath="' 'data-basepath="/influx/';
            sub_filter 'n.p="/"' 'n.p="/influx/"';
            sub_filter 'o.p="/"' 'o.p="/influx/"';
            sub_filter '/api/' '/influx/api/';
            sub_filter 'api/v2/query' 'influx/api/v2/query';
            sub_filter '/health`' '/influx/health`';
            sub_filter_types text/css text/javascript application/javascript application/json;
            sub_filter_once off;
          '';
          fastcgiParams = { };
          index = null;
          priority = 320;
          proxyPass = "http://influxdb2";
          proxySSEs = false;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
        "^~ /prometheus/" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = "/etc/nginx/.htpasswd";
          extraConfig = ''
            # required auth if not local
            satisfy any;
            allow 127.0.0.1;
            allow 10.0.0.0/8;
            allow 192.168.0.0/16;
            allow 172.16.0.0/12;
            allow ::1;
            allow fc00::/7;
            allow fe80::/10;
            # Telematica/ipv6
            allow 2a01:aea0:dd3:2aa::/64;
            deny all;
          '';
          fastcgiParams = { };
          index = null;
          priority = 320;
          proxyPass = "http://prometheus";
          proxySSEs = false;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
        "^~ /prometheus/api/v1/notifications/live" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = "/etc/nginx/.htpasswd";
          extraConfig = ''
            # required auth if not local
            satisfy any;
            allow 127.0.0.1;
            allow 10.0.0.0/8;
            allow 192.168.0.0/16;
            allow 172.16.0.0/12;
            allow ::1;
            allow fc00::/7;
            allow fe80::/10;
            # Telematica/ipv6
            allow 2a01:aea0:dd3:2aa::/64;
            deny all;
            
            chunked_transfer_encoding off;
            proxy_http_version 1.1;
            proxy_set_header Connection ''';
            proxy_buffering off;
            proxy_cache off;
          '';
          fastcgiParams = { };
          index = null;
          priority = 320;
          proxyPass = "http://prometheus";
          proxySSEs = true;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
        "^~ /scrutiny/" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = "/etc/nginx/.htpasswd";
          extraConfig = ''
            # required auth if not local
            satisfy any;
            allow 127.0.0.1;
            allow 10.0.0.0/8;
            allow 192.168.0.0/16;
            allow 172.16.0.0/12;
            allow ::1;
            allow fc00::/7;
            allow fe80::/10;
            # Telematica/ipv6
            allow 2a01:aea0:dd3:2aa::/64;
            deny all;
            rewrite ^/scrutiny/(.*) /$1 break;
            proxy_redirect / /scrutiny/;
          '';
          fastcgiParams = { };
          index = null;
          priority = 320;
          proxyPass = "http://scrutiny";
          proxySSEs = false;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
        "~ /\\.ht" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = null;
          extraConfig = "deny all;";
          fastcgiParams = { };
          index = null;
          priority = 1000;
          proxyPass = null;
          proxySSEs = false;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
      };
      onlySSL = false;
      quic = false;
      redirectCode = 301;
      rejectSSL = false;
      reuseport = false;
      root = null;
      serverAliases = [ ];
      serverName = null;
      sslTrustedCertificate = null;
      useACMEHost = null;
    };
    localhost = {
      acmeFallbackHost = null;
      acmeRoot = "/var/lib/acme/acme-challenge";
      addSSL = false;
      basicAuth = { };
      basicAuthFile = null;
      default = false;
      enableACME = false;
      extraConfig = "";
      forceSSL = false;
      globalRedirect = null;
      http2 = true;
      http3 = true;
      http3_hq = false;
      kTLS = false;
      listen = [ ];
      listenAddresses = [
        "0.0.0.0"
        "[::]"
      ];
      locations = {
        "/nginx_status" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = null;
          extraConfig = ''
            stub_status on;
            access_log off;
            allow 127.0.0.1;
            allow ::1;
            deny all;
          '';
          fastcgiParams = { };
          index = null;
          priority = 1000;
          proxyPass = null;
          proxySSEs = false;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
        "= /rtorrent-rpc2" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = null;
          extraConfig = ''
            scgi_pass rtorrent-ps;
            include /nix/store/ydxmj26v51s924b53lcq95fpbxfsq0qa-nginx-1.30.5/conf/scgi_params;
            
            allow 127.0.0.1;
            allow ::1;
            deny all;
          '';
          fastcgiParams = { };
          index = null;
          priority = 1000;
          proxyPass = null;
          proxySSEs = false;
          proxyWebsockets = false;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = "rtorrent-ps";
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
      };
      onlySSL = false;
      quic = false;
      redirectCode = 301;
      rejectSSL = false;
      reuseport = false;
      root = null;
      serverAliases = [
        "127.0.0.1"
        "[::1]"
      ];
      serverName = null;
      sslTrustedCertificate = null;
      useACMEHost = null;
    };
    "nix.funktionaali.com" = {
      acmeFallbackHost = null;
      acmeRoot = null;
      addSSL = false;
      basicAuth = { };
      basicAuthFile = null;
      default = false;
      enableACME = true;
      extraConfig = ''
        ssl_stapling off;
        ssl_stapling_verify off;
        
      '';
      forceSSL = true;
      globalRedirect = null;
      http2 = true;
      http3 = true;
      http3_hq = false;
      kTLS = true;
      listen = [ ];
      listenAddresses = [ ];
      locations = {
        "/" = {
          alias = null;
          basicAuth = { };
          basicAuthFile = null;
          extraConfig = ''
            proxy_redirect http:// https://;
          '';
          fastcgiParams = { };
          index = null;
          priority = 1000;
          proxyPass = "http://harmonia";
          proxySSEs = false;
          proxyWebsockets = true;
          recommendedProxySettings = true;
          recommendedUwsgiSettings = false;
          return = null;
          root = null;
          scgiPass = null;
          tryFiles = null;
          useGrpcErrorPages = false;
          uwsgiPass = null;
        };
      };
      onlySSL = false;
      quic = false;
      redirectCode = 301;
      rejectSSL = false;
      reuseport = false;
      root = null;
      serverAliases = [ ];
      serverName = null;
      sslTrustedCertificate = null;
      useACMEHost = null;
    };
  };
}