1let
2 nginxRoot = "/var/run/nginx";
3in
4 import ./make-test.nix ({...}: {
5 name = "nghttpx";
6 nodes = {
7 webserver = {
8 networking.firewall.allowedTCPPorts = [ 80 ];
9 systemd.services.nginx = {
10 preStart = ''
11 mkdir -p ${nginxRoot}
12 echo "Hello world!" > ${nginxRoot}/hello-world.txt
13 '';
14 };
15
16 services.nginx = {
17 enable = true;
18 virtualHosts."server" = {
19 locations."/".root = nginxRoot;
20 };
21 };
22 };
23
24 proxy = {
25 networking.firewall.allowedTCPPorts = [ 80 ];
26 services.nghttpx = {
27 enable = true;
28 frontends = [
29 { server = {
30 host = "*";
31 port = 80;
32 };
33
34 params = {
35 tls = "no-tls";
36 };
37 }
38 ];
39 backends = [
40 { server = {
41 host = "webserver";
42 port = 80;
43 };
44 patterns = [ "/" ];
45 params.proto = "http/1.1";
46 }
47 ];
48 };
49 };
50
51 client = {};
52 };
53
54 testScript = ''
55 startAll;
56
57 $webserver->waitForOpenPort("80");
58 $proxy->waitForOpenPort("80");
59 $client->waitUntilSucceeds("curl -s --fail http://proxy/hello-world.txt");
60 '';
61 })