问题
顶级域名 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
的匹配顺序:
- 准确字符串
server {
listen 80;
server_name a.com www.a.com;
}
- 以通配符开始的字符串
server {
listen 80;
server_name *.a.com;
}
- 以通配符结束的字符串
server {
listen 80;
server_name www.*;
}
- 正则表达式
server {
listen 80;
server_name ~^(?.+)\.a\.com$;
}