Rails应用程序和乘客的nginx子域失败

我对nginx部署是完全陌生的,并且遇到了在乘客中运行rails应用程序的子域的问题。 我的应用程序结构是这样的

-- sss.com (parent domain) -- sub.sss.com (subdomain) -- zzz.com (which will be redirected to sub.sss.com) 

为了更清晰的视angular,请考虑一下gmail结构

  -- google.com (parent domain) - mail.google.com (subdomain) -- gmail.com (which will be redirected to mail.google.com) 

请记住,sub.sss.com不只是sss下的一个目录,它完全是一个不同的rails应用程序。

要设置一个类似的结构,我已经configurationnginx像这样

 server { listen 80; server_name sss.com *.sss.com; rewrite ^(.*) http://sss.com$1 permanent; } server { listen 80; server_name sss.com; passenger_enabled on; access_log logs/sss.log; error_log logs/sss_error.log; root /var/www/sss/public; } server { listen 80; server_name sub.sss.com; passenger_enabled on; access_log logs/sub.log; error_log logs/sub_error.log; root /var/www/sub/public; } server { listen 80; server_name zzz.com; rewrite ^(.*) http://sub.sss.com$1 permanent; } 

当我开始nginx我得到这个警告信息

 nginx: [warn] conflicting server name "sss.com" on 0.0.0.0:80, ignored 

当试图访问urlwww.sss.com时得到这个消息

– 错误310(净:: ERR_TOO_MANY_REDIRECTS):有太多的redirect。

FF – Firefox已经检测到服务器正以一种永远不会完成的方式redirect这个地址的请求。

但是,当我访问zzz.com,它成功地redirect到sub.sss.com具有相同的错误。

似乎它在某种循环中搞砸了。 有人有一个想法如何解决这个问题?

在第一台服务器中,您也可以在第二台服务器中定义sss.com服务器。 你只需要从第一个删除。 像那样 :

 server { listen 80; server_name *.sss.com; rewrite ^(.*) http://sss.com$1 permanent; } server { listen 80; server_name sss.com; passenger_enabled on; access_log logs/sss.log; error_log logs/sss_error.log; root /var/www/sss/public; } server { listen 80; server_name sub.sss.com; passenger_enabled on; access_log logs/sub.log; error_log logs/sub_error.log; root /var/www/sub/public; } server { listen 80; server_name zzz.com; rewrite ^(.*) http://sub.sss.com$1 permanent; } 

你有3个领域/亚达米安,应该只有3个服务器块,而不是你有四个。

试试…

 server { # This server block serves sss.com listen 80; server_name sss.com; passenger_enabled on; access_log logs/sss.log; error_log logs/sss_error.log; root /var/www/sss/public; } server { # This server block serves sub.sss.com listen 80; server_name sub.sss.com; passenger_enabled on; access_log logs/sub.log; error_log logs/sub_error.log; root /var/www/sub/public; } server { # This server block redirects zzz.com to sub.sss.com listen 80; server_name zzz.com; rewrite ^ http://sub.sss.com$request_uri? permanent; }