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

时间:2014-07-30 01:27:14

标签: redirect nginx

我的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 app

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

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

我更改的nginx.conf文件中唯一的设置是server_names_hash_bucket_size。这似乎无关。

1 个答案:

答案 0 :(得分:1)

您需要server_name directive来处理blog.russellrollins.complaybeercan.com,否则会将第一个server_name作为默认值,或者您可以使用default_server设置默认值。