Merge pull request #23279 from mbbx6spp/make-nginx-module-less-gross
nginx service: add commonHttpConfig option
This commit is contained in:
commit
fff8cc79df
@ -87,6 +87,8 @@ let
|
|||||||
|
|
||||||
server_tokens ${if cfg.serverTokens then "on" else "off"};
|
server_tokens ${if cfg.serverTokens then "on" else "off"};
|
||||||
|
|
||||||
|
${cfg.commonHttpConfig}
|
||||||
|
|
||||||
${vhosts}
|
${vhosts}
|
||||||
|
|
||||||
${optionalString cfg.statusPage ''
|
${optionalString cfg.statusPage ''
|
||||||
@ -275,6 +277,24 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
commonHttpConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
example = ''
|
||||||
|
resolver 127.0.0.1 valid=5s;
|
||||||
|
|
||||||
|
log_format myformat '$remote_addr - $remote_user [$time_local] '
|
||||||
|
'"$request" $status $body_bytes_sent '
|
||||||
|
'"$http_referer" "$http_user_agent"';
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
With nginx you must provide common http context definitions before
|
||||||
|
they are used, e.g. log_format, resolver, etc. inside of server
|
||||||
|
or location contexts. Use this attribute to set these definitions
|
||||||
|
at the appropriate location.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
httpConfig = mkOption {
|
httpConfig = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
|
42
nixos/tests/nginx.nix
Normal file
42
nixos/tests/nginx.nix
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# verifies:
|
||||||
|
# 1. nginx generates config file with shared http context definitions above
|
||||||
|
# generated virtual hosts config.
|
||||||
|
|
||||||
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
|
name = "jenkins";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ mbbx6spp ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
webserver =
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{ services.nginx.enable = true;
|
||||||
|
services.nginx.commonHttpConfig = ''
|
||||||
|
log_format ceeformat '@cee: {"status":"$status",'
|
||||||
|
'"request_time":$request_time,'
|
||||||
|
'"upstream_response_time":$upstream_response_time,'
|
||||||
|
'"pipe":"$pipe","bytes_sent":$bytes_sent,'
|
||||||
|
'"connection":"$connection",'
|
||||||
|
'"remote_addr":"$remote_addr",'
|
||||||
|
'"host":"$host",'
|
||||||
|
'"timestamp":"$time_iso8601",'
|
||||||
|
'"request":"$request",'
|
||||||
|
'"http_referer":"$http_referer",'
|
||||||
|
'"upstream_addr":"$upstream_addr"}';
|
||||||
|
'';
|
||||||
|
services.nginx.virtualHosts."0.my.test" = {
|
||||||
|
extraConfig = ''
|
||||||
|
access_log syslog:server=unix:/dev/log,facility=user,tag=mytag,severity=info ceeformat;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
startAll;
|
||||||
|
|
||||||
|
$webserver->waitForUnit("nginx");
|
||||||
|
$webserver->waitForOpenPort("80");
|
||||||
|
'';
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user