2014-01-18 82 views
1

我需要添加www非www重定向到nginx配置。这里是配置文件的一部分(似乎整个配置太长,堆栈溢出):Nginx的www非非www重定向

user       nginx; 
worker_processes    1; 
error_log      /var/deploy/mydomain/web_head/shared/log/nginx_error.log; 

events 
{ 
    worker_connections   1024; 

} 

http 
{ 
    gzip      on; 

    ... 

    server { 
     server_name www.mydomain.com; 
     return 301 $scheme://mydomain.com$request_uri; 
    } 

    server 
    { 
    listen     80 default_server; 
    server_name    _; 

    rails_env    production; 
    passenger_enabled  on; 

    root     /var/deploy/mydomain/web_head/current/public; 

    client_max_body_size 50m; 
    # redirect to 503 if maintenance page present 
    if (-f $document_root/cloud66_maintenance.html) 
    { 
     return 503; 
    } 

    # redirect on errors 
    error_page    500 502 504 /50x.html; 
    error_page    503 @maintenance; 

    # handle error redirect 
    location = /50x.html 
    { 
     root html; 
    } 

    location @maintenance 
    { 
     error_page 405 = /cloud66_maintenance.html; 
     if (-f $document_root/cloud66_maintenance.html) 
     { 
      rewrite ^(.*)$ /cloud66_maintenance.html break; 
     } 
     rewrite ^(.*)$ /503.html break; 
    } 



    try_files $uri /cloud66_maintenance.html @passenger; 
    location @passenger 
    { 
     passenger_enabled   on; 
     passenger_min_instances  5; 
     passenger_set_cgi_param  HTTP_X_FORWARDED_PROTO $scheme; 
    } 

    location ~ \.php$ 
    { 
     deny all; 
    } 
    } 


} 

它没有工作。我甚至尝试添加以下块到最后:

server { 
    server_name www.mydomain.com; 
    return 301 $scheme://mydomain.com$request_uri; 
} 

而且也试图与server_name mydomain.com.更换server_name _;

谢谢!

+0

你重新加载nginx的设置?因为你做得正确 –

+0

是的,它已被重新加载。嗯,很奇怪。 –

+0

是否正在访问确切的'www.mydomain.com'?也ps:你不需要'server_name _;'如果你想匹配所有,你可以完全删除它 –

回答

0

如果您使用的是CustomConfig,云66会自动重新加载配置。你可以试试这个:

if ($http_host = www.mydomain.com) { 
    rewrite (.*) http://mycomain.com$1 permanent; 
} 

这既可以是你的server部分

+0

似乎最好的做法是在这种情况下有两个服务器代码。看到这里:http://stackoverflow.com/questions/7947030/nginx-no-www-to-www-and-www-to-no-www ..这就是为什么我试着上述代码,Khash。 –

+0

这似乎有点过分,但如果它的工作。我从我们自己的nginx配置发布了代码(尽管我们的方式是另一种方式:非www到www)。 – Khash