1{ ... }:
2let
3 defaultNginxSocketPath = "/var/run/nginx/default-test.sock";
4 nginxSocketPath = "/var/run/nginx/test.sock";
5in
6{
7 name = "nginx-unix-socket";
8
9 nodes = {
10 webserver =
11 { pkgs, lib, ... }:
12 {
13 services.nginx = {
14 enable = true;
15
16 defaultListen = [ { addr = "unix:${defaultNginxSocketPath}"; } ];
17 virtualHosts.defaultLocalhost = {
18 serverName = "defaultLocalhost";
19 locations."/default".return = "200 'bar'";
20 };
21
22 virtualHosts.localhost = {
23 serverName = "localhost";
24 listen = [ { addr = "unix:${nginxSocketPath}"; } ];
25 locations."/test".return = "200 'foo'";
26 };
27 };
28 };
29 };
30
31 testScript = ''
32 webserver.wait_for_unit("nginx")
33 webserver.wait_for_open_unix_socket("${defaultNginxSocketPath}", timeout=1)
34 webserver.wait_for_open_unix_socket("${nginxSocketPath}", timeout=1)
35
36 webserver.succeed("curl --fail --silent --unix-socket '${defaultNginxSocketPath}' http://defaultLocalhost/default | grep '^bar$'")
37 webserver.succeed("curl --fail --silent --unix-socket '${nginxSocketPath}' http://localhost/test | grep '^foo$'")
38 '';
39}