How to exclude specific subdomains server_name in nginx configuration

You need at least two server blocks, and nginx will select the more specific server block to handle the request. See this document for details.

You will need a server block for xyz.example.com such as:

server {
    listen      80;
    server_name xyz.example.com;

    location / {
        proxy_pass http://$1.foo.com;
    }
}

Then either a default_server or a wild card server, such as:

server {
    listen 80;
    server_name *.example.com;
    return http://foo.com/;
}

Or:

server {
    listen 80 default_server;
    return http://foo.com/;
}