顶级域名与子域名解析到同一服务器的Nginx代理问题

问题

顶级域名 a.com 和子域名 b.a.com 解析到同一个服务器IP,但被 Nginx 同一化处理。我的预期是 Nginx 分别代理两个域名。
Nginx 当前关键配置:

server {
  listen 80;
  server_name a.com;

  location / {
    proxy_pass http://127.0.0.1:8080/APIs/;
  }
}

解决

server {
  listen 80;
  server_name a.com www.a.com;

  location / {
    proxy_pass http://127.0.0.1:8080/Hello/;
  }
}

server {
  listen 80;
  server_name b.a.com;

  location / {
    proxy_pass http://127.0.0.1:8080/APIs/;
  }
}

拓展

Nginx 对 server_name 的匹配顺序:

  1. 准确字符串
server {
  listen 80;
  server_name a.com www.a.com;
}
  1. 以通配符开始的字符串
server {
  listen 80;
  server_name *.a.com;
}
  1. 以通配符结束的字符串
server {
  listen 80;
  server_name www.*;
}
  1. 正则表达式
server {
  listen 80;
  server_name ~^(?.+)\.a\.com$;
}

你可能感兴趣的:(顶级域名与子域名解析到同一服务器的Nginx代理问题)