diff options
Diffstat (limited to 'usecases/server/nginx.nix')
-rw-r--r-- | usecases/server/nginx.nix | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/usecases/server/nginx.nix b/usecases/server/nginx.nix new file mode 100644 index 0000000..2057c87 --- /dev/null +++ b/usecases/server/nginx.nix | |||
@@ -0,0 +1,56 @@ | |||
1 | inputs: | ||
2 | |||
3 | { config, ... }: | ||
4 | |||
5 | { | ||
6 | services.nginx = { | ||
7 | enable = true; | ||
8 | |||
9 | # For the prometheus exporter | ||
10 | statusPage = true; | ||
11 | |||
12 | recommendedGzipSettings = true; | ||
13 | recommendedOptimisation = true; | ||
14 | recommendedProxySettings = true; | ||
15 | recommendedTlsSettings = true; | ||
16 | |||
17 | commonHttpConfig = '' | ||
18 | # Add HSTS header with preloading to HTTPS requests. | ||
19 | # Adding this header to HTTP requests is discouraged | ||
20 | map $scheme $hsts_header { | ||
21 | https "max-age=31536000; includeSubdomains; preload"; | ||
22 | } | ||
23 | |||
24 | add_header Strict-Transport-Security $hsts_header; | ||
25 | |||
26 | add_header 'Referrer-Policy' 'strict-origin-when-cross-origin'; | ||
27 | |||
28 | add_header X-Frame-Options DENY; | ||
29 | |||
30 | add_header X-Content-Type-Options nosniff; | ||
31 | |||
32 | # Better to setup CSP, but nice default nonetheless | ||
33 | add_header X-XSS-Protection "1; mode=block"; | ||
34 | ''; | ||
35 | |||
36 | sslDhparam = config.security.dhparams.params.nginx.path; | ||
37 | }; | ||
38 | |||
39 | security.dhparams = { | ||
40 | enable = true; | ||
41 | params = { | ||
42 | nginx = { }; | ||
43 | }; | ||
44 | }; | ||
45 | |||
46 | services.prometheus.exporters.nginx = { | ||
47 | enable = true; | ||
48 | listenAddress = "${config.topology.mainVpn.currentNodeIP}"; | ||
49 | }; | ||
50 | |||
51 | networking.firewall.allowedTCPPorts = [ 80 443 ]; | ||
52 | |||
53 | networking.firewall.interfaces.${config.topology.mainVpn.interfaceName}.allowedTCPPorts = [ | ||
54 | config.services.prometheus.exporters.nginx.port | ||
55 | ]; | ||
56 | } | ||