2012-03-15 103 views
0

我完全是新的nginx部署,並有問題設置在乘客中運行的rails應用程序的子域。我的應用程序的結構是這樣的nginx子域失敗與Rails應用程序和乘客

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

爲了更清晰的角度來看,對Gmail結構

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

,並記住sub.sss.com不只是下一個SSS目錄,其完全不同的軌道應用程序。

要設置類似的結構我已經nginx的配置這樣的

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 

並試圖訪問此網址www當得到這個消息。 sss.com

Chrome - Error 310(net :: ERR_TOO_MANY_重定向):重定向過多。

FF - Firefox已檢測到服務器以永不完成的方式重定向該地址的請求。

但是,當我訪問zzz.com時,它成功地重定向到sub.sss.com與相同的錯誤。

似乎它在某種循環中搞砸了。有誰知道如何解決這個問題?

回答

1

在您的第一臺服務器中,您也可以在第二臺服務器中定義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;  
}  
+0

您的建議改變sss.com後工作正常,但不是子域。它會爲sub.sss.com引發Server not found錯誤。另外zzz.com重定向到sss.com insted sub.sss.com。任何想法? – RameshVel 2012-03-15 09:20:11

+0

終於確定了問題..問題出在zzz.com中的www子域名。我已經將* .zzz.com的url重寫添加到了'rewrite ^(。*)http://zzz.com$1 permanent;'中。現在一切正常 – RameshVel 2012-03-16 07:47:15

0

你有3個域/子達米安,應該只有3個服務器塊,而不是你有四個。

的Try ...

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;  
} 
相關問題