Merge pull request #79046 from aanderse/http2

nixos/httpd: add http2 option
This commit is contained in:
Aaron Andersen 2020-02-06 06:43:13 -05:00 committed by GitHub
commit f87440fd0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

View File

@ -29,8 +29,8 @@ let
listenInfo = unique (concatMap mkListenInfo vhosts); listenInfo = unique (concatMap mkListenInfo vhosts);
enableHttp2 = any (vhost: vhost.http2) vhosts;
enableSSL = any (listen: listen.ssl) listenInfo; enableSSL = any (listen: listen.ssl) listenInfo;
enableUserDir = any (vhost: vhost.enableUserDir) vhosts; enableUserDir = any (vhost: vhost.enableUserDir) vhosts;
# NOTE: generally speaking order of modules is very important # NOTE: generally speaking order of modules is very important
@ -44,6 +44,7 @@ let
"mpm_${cfg.multiProcessingModule}" "mpm_${cfg.multiProcessingModule}"
] ]
++ (if cfg.multiProcessingModule == "prefork" then [ "cgi" ] else [ "cgid" ]) ++ (if cfg.multiProcessingModule == "prefork" then [ "cgi" ] else [ "cgid" ])
++ optional enableHttp2 "http2"
++ optional enableSSL "ssl" ++ optional enableSSL "ssl"
++ optional enableUserDir "userdir" ++ optional enableUserDir "userdir"
++ optional cfg.enableMellon { name = "auth_mellon"; path = "${pkgs.apacheHttpdPackages.mod_auth_mellon}/modules/mod_auth_mellon.so"; } ++ optional cfg.enableMellon { name = "auth_mellon"; path = "${pkgs.apacheHttpdPackages.mod_auth_mellon}/modules/mod_auth_mellon.so"; }
@ -164,6 +165,7 @@ let
SSLCertificateFile ${sslServerCert} SSLCertificateFile ${sslServerCert}
SSLCertificateKeyFile ${sslServerKey} SSLCertificateKeyFile ${sslServerKey}
${optionalString (sslServerChain != null) "SSLCertificateChainFile ${sslServerChain}"} ${optionalString (sslServerChain != null) "SSLCertificateChainFile ${sslServerChain}"}
${optionalString hostOpts.http2 "Protocols h2 h2c http/1.1"}
${acmeChallenge} ${acmeChallenge}
${mkVHostCommonConf hostOpts} ${mkVHostCommonConf hostOpts}
</VirtualHost> </VirtualHost>

View File

@ -135,6 +135,15 @@ in
description = "Path to server SSL chain file."; description = "Path to server SSL chain file.";
}; };
http2 = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable HTTP 2. HTTP/2 is supported in all multi-processing modules that come with httpd. <emphasis>However, if you use the prefork mpm, there will
be severe restrictions.</emphasis> Refer to <link xlink:href="https://httpd.apache.org/docs/2.4/howto/http2.html#mpm-config"/> for details.
'';
};
adminAddr = mkOption { adminAddr = mkOption {
type = types.nullOr types.str; type = types.nullOr types.str;
default = null; default = null;