From fce4d89e1d83f8dd05ff4a3ec3d309155df0798a 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; + } + ''; + }; + }; +}