Reputation: 938
I'm using wildcard in server_name
. I want to redirect all subdomains of example.com
(configured as *.example.com) to foo.com
except xyz.example.com
I have configuration as follows
server {
listen 80;
server_name *.example.com;
location / {
proxy_pass http://$1.foo.com;
}
}
I don't want to change any request coming to xyz.example.com
Upvotes: 14
Views: 12810
Reputation: 49672
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/;
}
Upvotes: 13