Перенаправление к 'www' домену префикса, использующему nginx

Я принес домен в godady, и я Установил Пассажира + Nginx на Linux/Unix (Ubuntu) сервер и развернул приложение Ruby. Теперь мой домен смотрит что-то как http://example.com, когда я пытаюсь запросить от браузера. Но я хочу свой домен к перенаправлению по умолчанию к www каждый раз, когда это требуют от браузера (как http://www.example.com.).

example.conf

    server {
    listen 80;
    server_name www.example.com example.com;
    # return 301 $scheme://www.example.com$request_uri;
    # Tell Nginx and Passenger where your app's 'public' directory is
    root /var/www/example/public;

    # Turn on Passenger
    passenger_enabled on;
    passenger_spawn_method direct;
    passenger_min_instances 1;
    #passenger_pool_idle_time 0;
    rails_env development;
    passenger_ruby /usr/local/rvm/gems/ruby-2.3.3/wrappers/ruby;
    passenger_sticky_sessions on;


}

некомментарий строки

возвратите 301$scheme://www.example.com$request_uri;

бросает ошибку

www.example.com redirected you too many times.
Try clearing your cookies.
ERR_TOO_MANY_REDIRECTS

Я вынужден вручную ввести www.example.com в браузере. Вместо этого как я могу перенаправить к www по умолчанию?

Любая Справка высоко ценится.Заранее спасибо!

1
задан 4 April 2019 в 08:36

2 ответа

Вам в основном нужно два server блоки конфигурации:

  • Один для www; быть перенаправленным для базирования домена только
  • Один для основного домена

Вот пример для запущения Вас:

server {
    listen 80;
    server_name www.example.com;

    location / {
        # Redirection happens here
        return 301 http://example.com$request_uri;
    }
}


server {
    listen 80 default_server;
    server_name example.com;

    # Other conf directives go here
}
2
ответ дан 7 December 2019 в 13:18

Самый легкий путь состоит в том, чтобы, вероятно, использовать NGINX if операторы. Просто поместите следующее в свою виртуальную конфигурацию хоста:

if ($host = "example.com") {
    return 301 $scheme://www.$host$request_uri;
}

и обязательно замените "example.com" Вашим доменным именем.

В то время как это - самый простой способ, которым я нашел, это не является лучшим. Рекомендуемый маршрут состоит в том, чтобы создать отдельное server блок для non-www, и помещенный return оператор там.

0
ответ дан 7 December 2019 в 13:18

Другие вопросы по тегам:

Похожие вопросы: