From 7f539d7e060e9c8e326138abb7e6844023d0f73e 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 0e875c8..3a14eb6 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 0000000..49598a2 --- /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; + } + ''; + }; + }; +}