From 83830dbfed4cbe787f39ed0b49e1ca7679c3fc08 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Mon, 16 Sep 2024 16:33:34 +0200 Subject: [PATCH] Use nginx to serve website and other services MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of using multiple tunels to forward all our services to the VM that serves jungle.bsc.es, just use nginx to redirect the traffic from hut. This allows adding custom rules for paths that are not posible otherwise. Reviewed-by: Aleix Boné --- m/hut/configuration.nix | 1 + m/hut/nginx.nix | 61 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 m/hut/nginx.nix diff --git a/m/hut/configuration.nix b/m/hut/configuration.nix index 0e875c8f..3a14eb63 100644 --- a/m/hut/configuration.nix +++ b/m/hut/configuration.nix @@ -17,6 +17,7 @@ ./gitea.nix ./msmtp.nix ./postgresql.nix + ./nginx.nix #./pxe.nix ]; diff --git a/m/hut/nginx.nix b/m/hut/nginx.nix new file mode 100644 index 00000000..49598a28 --- /dev/null +++ b/m/hut/nginx.nix @@ -0,0 +1,61 @@ +{ theFlake, pkgs, ... }: +let + website = pkgs.stdenv.mkDerivation { + name = "jungle-web"; + src = theFlake; + buildInputs = [ pkgs.hugo ]; + buildPhase = '' + cd web + rm -rf public/ + hugo + ''; + installPhase = '' + cp -r public $out + ''; + }; +in +{ + services.nginx = { + enable = true; + virtualHosts."jungle.bsc.es" = { + root = "${website}"; + listen = [ + { + addr = "127.0.0.1"; + port = 80; + } + ]; + extraConfig = '' + location /git { + rewrite ^/git$ / break; + rewrite ^/git/(.*) /$1 break; + proxy_pass http://127.0.0.1:3000; + proxy_redirect http:// $scheme://; + } + location /cache { + rewrite ^/cache(.*) /$1 break; + proxy_pass http://127.0.0.1:5000; + proxy_redirect http:// $scheme://; + } + location /lists { + proxy_pass http://127.0.0.1:8081; + proxy_redirect http:// $scheme://; + } + location /grafana { + proxy_pass http://127.0.0.1:2342; + proxy_redirect http:// $scheme://; + # Websockets + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + location ~ ^/~(.+?)(/.*)?$ { + alias /ceph/home/$1/public_html$2; + index index.html index.htm; + autoindex on; + absolute_redirect off; + } + ''; + }; + }; +}