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