问题

当设置了多个域名解析到同一个 IP 的 Nginx 服务器的时候,就会出现没有设置的域名也可以访问特定的站点,默认的 Nginx Vhost 配置会把没有匹配的域名请求指向到默认的default_server

解决

  1. nginx.conf配置中加入这一段默认的 server 配置
  2. 删除vhostsdefault配置
    1
    2
    3
    4
    5
    server {
    listen 80 default_server;
    server_name _;
    return 444;
    }

因为 Nginx 的 Vhost 会根据请求的域名去访问绑定了域名的站点,如果没有匹配到,就会去访问default_server

default_server收到的请求都返回 444

Nginx 配置文件层级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
events {
}
http {
server {
upstream {
}
location {
# lalal
}
}
}
}