我有一台Nginx服务器。 我想建立两个网站:
这是我的服务器阻止配置:
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.com
,www.my_other_site.com
,staging.backend.mysite.com
和www.staging.backend.mysite.com
具有相同的DNS A
配置,它们指向同一个IP。
更新2:
当我禁用www.backend.mysite.com
服务器阻止时,它可以工作。网站staging.backend.mysite.com
正在按预期工作。这意味着确实第一个块会覆盖第二个块。
如何告诉第一个服务器块不考虑帐户staging.backend.mysite.com
?有没有办法排除特定的域名?
答案 0 :(得分:0)
尝试为包含的配置文件指定与域名相同的名称,例如:
aa.domain.com --> aa.domain.com.nginx.conf
bb.domain.com --> bb.domain.com.nginx.conf
因此nginx将以自然字母顺序包含和捕获