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