Skip to content

Commit

Permalink
nginx service: add commonHttpConfig option
Browse files Browse the repository at this point in the history
  • Loading branch information
mbbx6spp committed Feb 28, 2017
1 parent e0b04b4 commit 251b9ca
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
20 changes: 20 additions & 0 deletions nixos/modules/services/web-servers/nginx/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ let
server_tokens ${if cfg.serverTokens then "on" else "off"};
${cfg.commonHttpConfig}
${vhosts}
${optionalString cfg.statusPage ''
Expand Down Expand Up @@ -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 {
type = types.lines;
default = "";
Expand Down
42 changes: 42 additions & 0 deletions nixos/tests/nginx.nix
Original file line number Diff line number Diff line change
@@ -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");
'';
})

0 comments on commit 251b9ca

Please sign in to comment.