2014-01-18 4 views
1

Мне нужно добавить www для не-www перенаправления на конфигурацию nginx. Вот часть из конфигурационного файла (кажется, что вся конфигурация слишком долго переполнение стека):Nginx www to non-www redirect

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 _; с server_name mydomain.com..

Спасибо!

+0

вы перезагрузить настройки Nginx? потому что вы сделали это правильно –

+0

Да, он был перезагружен. хм, странно. –

+0

Вы посещаете точный 'www.mydomain.com'? также ps: вам не нужно 'server_name _;', если вы хотите совместить все, вы можете полностью удалить его –

ответ

0

Облако 66 автоматически перезагружает конфигурацию, если вы используете CustomConfig. Вы можете попробовать это:

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

0

Я закончил с использованием dnsimple услуги переадресации URL: https://dnsimple.com/url-forwarding-301-redirect. Работает отлично, без необходимости редактировать конфигурацию nginx.

Смежные вопросы