The way I got it set up using Pihole and NginxProxyManager in Unraid:
Deploy NginxProxyManager using custom: br0 with a separate IP address
Pihole can't do wildcards unless you create pihole/dnmasq.d/03-custom-dns.conf and add address=/tld/npm_ip, this way *.tld goes to the stated IP.
Now your plex.tld goes to your nginx proxy manager IP, and it needs to handle the subdomain.
NginxProxyManager can do wildcards both ways, so you can create plex.* to go to plex IP and port. or sonarr.* that goes to your server IP and sonarr port
same