I have a NGINX configuration that works perfectly, but it uses subdirectories (e.g., example.site/service) because I originally had a free DDNS hostname instead of a real domain. Now that I have a domain, I would prefer to use subdomains instead (e.g., service.example.site).

I tried to change things on my own by editing each location into a separate server block but that didn’t work, so I have to be missing something. Below is my current config - I’d really appreciate any help.

server {    
    set $server		"X.X.X.2";
    set $domain		"example.site";
    server_name		example.site;
	
	# kavita book server
    location /kavita {
        # host and X headers
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; aio threads;
		proxy_set_header        X-Forwarded-Proto $scheme;

		# headers to proxy websocket connections
		proxy_http_version		1.1;
		proxy_set_header		Upgrade $http_upgrade;
		proxy_set_header		Connection "Upgrade"; 

		# proxy to Kavita running locally on port using ssl
		proxy_pass				http://$server:5000;
    }
    
    # dashboard
    location / {
		proxy_pass				http://$server:6000;
			
		auth_basic				"Log in to the dashboard";
		auth_basic_user_file	/etc/apache2/.htpasswd;
	}
    
    # weekly menu
    location /menu {
		root					/etc/nginx/html;
		index					weekly-menu.html;
	}

	listen 		443 ssl;
    
    ssl_certificate				/etc/nginx/certs/example.site.pem;
    ssl_certificate_key			/etc/nginx/certs/example.site.key;
}

server {	
	if ($host = $domain) {
		return	302 https://$host$request_uri;
	}
	
	listen 80;
}