Как настроить 301 редирект на новый домен

Я редактирую nginx.conf. Я хочу перенаправить все страницы домена domain1.com на domain2.com.

Как отредактировать файл, чтобы это заработало?

Я вижу строку:

if($http_host != domain1.com){
   rewrite (.*) https://domain1.com$1 permanent;
}

Если я изменю ‘=’ в условии if и укажу новый домен в правиле rewrite, сработает ли это, или мне нужно изменить что-то ещё?

Пример:

if($http_host = domain1.com){
   rewrite (.*) https://domain2.com$1 permanent;
}

В общем, я настраиваю это следующим образом:

server {
    listen 80;
    server_name domain1.com;
    return 301 https://domain2.com$request_uri;
}

Приведённую выше директиву можно изменить множеством способов, чтобы лучше соответствовать вашим потребностям.

Спасибо, у меня есть несколько вопросов.

В моём конфигурационном файле есть следующие строки:

server {
   listen 80
    return 301 https://domain1.com$request_uri
}

Не понимаю, почему там по умолчанию стоит 301. Стоит ли мне переопределить это или создать новый блок выше или ниже него (как вы предоставили)? Обязателен ли параметр server_name?

Не нарушит ли перенаправление всего трафика процесс обновления сертификата Let’s Encrypt?

Вы редактируете nginx.conf внутри контейнера Discourse или используете внешний обратный прокси-сервер nginx?

Если это внутренний, то вместо этого следует внести изменения в файл app.yml. Существует множество примеров того, как это сделать.

Если вы настраиваете внешний обратный прокси-сервер nginx, вы можете создать новый файл, например redirect.conf, в папке /etc/nginx/conf.d, используя приведённый мной пример конфигурации.

внутри контейнера. Я поищу решения для app.yml. Я видел одно для папки, надеюсь, найду решение для изменения домена. Спасибо.

Вы пробовали это?

Да, скоро это реализую. Большое спасибо за ваше время.

@itsbhanusharma Я сейчас внедряю код. Мой вопрос: будет ли LetsEncrypt автоматически обновлять сертификаты, если я оставлю старый сервер работать какое-то время, пока Google не обновит URL-адреса? Нужно ли что-то добавить, чтобы обновление LetsEncrypt не срывалось из-за этого изменения с 301-редиректом?

Может ли это сработать: Set up Let’s Encrypt with multiple domains / redirects

Я хочу исключить /.well-known/acme-challenge из редиректа.

проблема с 301-редиректом и LetsEncrypt