1let
2 nginxRoot = "/run/nginx";
3in
4 import ./make-test-python.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 start_all()
56
57 webserver.wait_for_open_port(80)
58 proxy.wait_for_open_port(80)
59 client.wait_until_succeeds("curl -s --fail http://proxy/hello-world.txt")
60 '';
61 })