当server_name不匹配时,Nginx会丢弃

时间:2016-03-23 15:58:42

标签: http nginx dns subdomain

我有两个vhost:一个在domain.tld端口80上,另一个在sub.domain.tld端口443上,SSL上。我在DNS服务器上添加了一个CNAME条目,将sub子域重定向到domain.tld.。 一切都按预期工作,但转到http://sub.domain.tld与转到http://domain.tldhttps://domain.tldhttps://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;
    ...
}

1 个答案:

答案 0 :(得分:5)

如果这些是您唯一的server块,那么它们也分别是端口443和端口80的defacto 默认服务器块。有关详细信息,请参阅this document

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

server {
    listen 80 default_server;
    listen 443 default_server;
    deny all;
}