当server_name不匹配时,Nginx会丢弃

pal*_*lra 3 subdomain dns http nginx

我有两个vhost:一个在domain.tld端口80上,另一个在sub.domain.tld端口443上,SSL上.我在我的DNS服务器上添加了一个CNAME条目,将我的sub子域重定向到domain.tld..一切都按预期工作,但会http://sub.domain.tld像去一样http://domain.tld,并且https://domain.tld一样https://sub.domain.tld.我怎么能阻止这个?

我的配置:

server {
    listen *:443;
    listen [::]:443;

    server_name www.sub.domain.tld;

    ssl on;
    ssl_certifiate ...;
    ssl_certifiate_key ...;

    root /var/www/sub.domain.tld;
    ...
}

server {
    listen *:80;
    listen [::]:80;

    server_name www.domain.tld;

    root /var/www/domain.tld;
    ...
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*ith 5

如果这些是您唯一的server块,那么它们也分别是端口443和端口80的事实默认服务器块.请参阅此文档了解详细信息

如果您不想这样,则需要声明一个默认server块.极简主义的定义可能是:

server {
    listen 80 default_server;
    listen 443 default_server;
    deny all;
}
Run Code Online (Sandbox Code Playgroud)