我有一台带有 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
?有没有办法排除特定的域名?
最佳答案
尝试为包含的配置文件提供与域名相同的名称,例如:
aa.domain.com --> aa.domain.com.nginx.conf
bb.domain.com --> bb.domain.com.nginx.conf
因此 nginx 将按自然字母顺序包含和捕获
关于nginx - 子子域被 NGINX 中的子域覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43663403/