子域名由NGINX中的子域覆盖

时间:2017-04-27 16:35:36

标签: nginx subdomain override

我有一台Nginx服务器。 我想建立两个网站:

  • backend.mysite.com
  • staging.backend.mysite.com

这是我的服务器阻止配置:

www.backend.mysite.com:

server {
        listen   80;
        server_name backend.mysite.com www.backend.mysite.com;
        location / {
                proxy_pass http://127.0.0.1:8800/; 
        }
}

server {
    listen 8800;
    server_name my.ip.address;
    root /projects/backend/production/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }        
}

www.staging.backend.mysite.com:

server {
        listen   80;
        server_name staging.backend.mysite.com www.staging.backend.mysite.com;
        location / {
                proxy_pass http://127.0.0.1:8900/; 
        }
}

server {
    listen 8900;
    server_name my.ip.address;
    root /projects/backend/staging/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }        
}

我的问题是backend.mysite.com覆盖了staging.backend.mysite.com。如果我的地址上有子子域,我怎么能说Nginx永远不会覆盖呢?

更新

我尝试在我的第二个配置中添加另一个域(my_other_site.com)以检查它是否有效:

server {
        listen   80;
        server_name my_other_site.com www.my_other_site.com staging.backend.mysite.com www.staging.backend.mysite.com;
        location / {
                proxy_pass http://127.0.0.1:8900/; 
        }
}

server {
    listen 8900;
    server_name my.ip.address;
    root /projects/backend/staging/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }        
}

当我访问my_other_site.com时,效果很好。第二个站点按预期到达。 my_other_site.comwww.my_other_site.comstaging.backend.mysite.comwww.staging.backend.mysite.com具有相同的DNS A配置,它们指向同一个IP。

更新2:

当我禁用www.backend.mysite.com服务器阻止时,它可以工作。网站staging.backend.mysite.com正在按预期工作。这意味着确实第一个块会覆盖第二个块。 如何告诉第一个服务器块不考虑帐户staging.backend.mysite.com?有没有办法排除特定的域名?

1 个答案:

答案 0 :(得分:0)

尝试为包含的配置文件指定与域名相同的名称,例如:

aa.domain.com --> aa.domain.com.nginx.conf
bb.domain.com --> bb.domain.com.nginx.conf

因此nginx将以自然字母顺序包含和捕获