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/;
}