Co-Authored-By: edef <edef@edef.eu> Co-Authored-by: Ryan Lahfa <raito@lix.systems> Change-Id: Ica1cda177a236814de900f50a8a61d288f58f519
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, ... }:
 | |
| let
 | |
|   host = "auth.snix.dev";
 | |
|   realm = "snix-project";
 | |
| in
 | |
| {
 | |
|   imports = [
 | |
|     ./base.nix
 | |
|   ];
 | |
| 
 | |
|   config = {
 | |
|     services.nginx.virtualHosts."${host}" = {
 | |
|       serverName = host;
 | |
|       enableACME = true;
 | |
|       forceSSL = true;
 | |
| 
 | |
|       locations."/" = {
 | |
|         recommendedProxySettings = true;
 | |
|         proxyPass = "http://127.0.0.1:9091";
 | |
|         extraConfig = ''
 | |
|           proxy_pass_header Authorization;
 | |
| 
 | |
|           proxy_busy_buffers_size   512k;
 | |
|           proxy_buffers   4 512k;
 | |
|           proxy_buffer_size   256k;
 | |
| 
 | |
|           # Allow clients with Auth hardcoded to use our base path.
 | |
|           #
 | |
|           # XXX: ok so this is horrible. For some reason gerrit explodes if
 | |
|           # it receives a redirect when doing auth. But we need to redirect
 | |
|           # the browser to reuse sessions. Thus, user agent scanning.
 | |
|           if ($http_user_agent ~* "^Java.*$") {
 | |
|             rewrite ^/auth/(.*)$ /$1 last;
 | |
|           }
 | |
|           rewrite ^/auth/(.*)$ /$1 redirect;
 | |
| 
 | |
|           # Hacks to make us compatible with authenticators that expect GitLab's format.
 | |
|           rewrite ^/realms/${realm}/protocol/openid-connect/api/v4/user$ /realms/${realm}/protocol/openid-connect/userinfo;
 | |
|           rewrite ^/realms/${realm}/protocol/openid-connect/oauth/authorize$ /realms/${realm}/protocol/openid-connect/auth?scope=openid%20email%20profile;
 | |
|           rewrite ^/realms/${realm}/protocol/openid-connect/oauth/token$ /realms/${realm}/protocol/openid-connect/token;
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       # Forward our admin address to our default realm.
 | |
|       locations."= /admin".extraConfig = "return 302 https://${host}/admin/snix-project/console/;";
 | |
|       locations."= /superadmin".extraConfig = "return 302 https://${host}/admin/master/console/;";
 | |
| 
 | |
|       # Forward our root address to the account management portal.
 | |
|       locations."= /".extraConfig = "return 302 https://${host}/realms/${realm}/account;";
 | |
|     };
 | |
|   };
 | |
| }
 |