nginx service: Make http2 an option.

HTTP 2 can break some things, for example due to this Chrome bug:

  https://bugs.chromium.org/p/chromium/issues/detail?id=796199

So the service hardcoding it to be enabled is not helpful.

This commit adds an option so you can turn it off.
This commit is contained in:
Niklas Hambüchen 2017-12-19 19:53:02 +01:00
parent d045d62500
commit afa97cb981
2 changed files with 16 additions and 1 deletions

View File

@ -167,7 +167,8 @@ let
listenString = { addr, port, ssl, ... }:
"listen ${addr}:${toString port} "
+ optionalString ssl "ssl http2 "
+ optionalString ssl "ssl "
+ optionalString vhost.http2 "http2 "
+ optionalString vhost.default "default_server "
+ ";";

View File

@ -114,6 +114,20 @@ with lib;
description = "Path to server SSL certificate key.";
};
http2 = mkOption {
type = types.bool;
default = true;
description = ''
Whether to enable HTTP 2.
Note that (as of writing) due to nginx's implementation, to disable
HTTP 2 you have to disable it on all vhosts that use a given
IP address / port.
If there is one server block configured to enable http2,then it is
enabled for all server blocks on this IP.
See https://stackoverflow.com/a/39466948/263061.
'';
};
root = mkOption {
type = types.nullOr types.path;
default = null;