Redirect 为什么每个请求都与我的nginx重定向匹配?

Redirect 为什么每个请求都与我的nginx重定向匹配?,redirect,nginx,Redirect,Nginx,我的nginx设置有一些问题 我有一个服务器,应该服务于两个域。一个域应该只执行重定向。一个域应该为www URL执行重定向,然后为我的uwsgi应用程序提供服务 出于某种原因,所有东西都与它找到的第一件东西相匹配。这很奇怪 这是.conf文件 server { listen 80; server_name russellrollins.com; return 301 $scheme://blog.russellrollins.com$request_uri; } s

我的nginx设置有一些问题

我有一个服务器,应该服务于两个域。一个域应该只执行重定向。一个域应该为www URL执行重定向,然后为我的uwsgi应用程序提供服务

出于某种原因,所有东西都与它找到的第一件东西相匹配。这很奇怪

这是.conf文件

 server {
    listen 80;
    server_name russellrollins.com;
    return 301 $scheme://blog.russellrollins.com$request_uri;
}

server {
    listen 80;
    server_name www.russellrollins.com;
    return 301 $scheme://blog.russellrollins.com$request_uri;
}

server {
    listen 80;
    server_name www.playbeercan.com;
    return 301 $scheme://playbeercan.com$request_uri;
}

server {
  listen 80;
  server_name playbeercan;
  charset utf-8;
  client_max_body_size 75M;

  location / { try_files $uri @playbeercan; }
  location @playbeercan {
    include uwsgi_params;
    uwsgi_pass unix:/var/www/playbeercan/playbeercan_uwsgi.sock;
  }
}
而不是发送:

russellrollins.com->blog.russellrollins.com

www.russellrollins.com->blog.russellrollins.com

www.playbeercan.com->playbeercan.com

playbeercan.com->uwsgi应用程序

它将我尝试的所有内容发送到blog.russellrollins.com。所有内容似乎都与第一个服务器名称匹配

我甚至尝试删除除第一个重定向之外的所有重定向,但它仍然匹配所有重定向


我在nginx.conf文件中更改的唯一设置是服务器名称、哈希、存储桶大小。这似乎不相关。

您需要有一个
服务器名称
指令
来处理
blog.russellrollins.com
playbeercan.com
,否则它将默认使用第一个
服务器名称,或者您可以使用
default\u server
设置默认值。

因此正确的解决方案是添加default\u server指令。不过,我建议您使用302重定向,直到一切正常为止。因为我不正确的重定向被缓存,并且把我的故障排除搞砸了。