Cómo crear una redirección 301 a un nuevo dominio

Estoy editando nginx.conf. Quiero redirigir todas las páginas de domain1.com a domain2.com.

¿Cómo edito el archivo para que funcione?

Veo una línea:

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

Si cambio el ‘!=’ por ‘=’ en la sentencia if y modifico el rewrite al nuevo dominio, ¿funcionará o necesito asegurarme de cambiar otras cosas?

Ejemplo:

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

En general, lo configuro de la siguiente manera:

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

La directiva anterior se puede modificar de muchas maneras para adaptarse mejor a tus necesidades.

Gracias, tengo algunas preguntas.

Tengo las siguientes líneas en el archivo de configuración:

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

No sé por qué el 301 está ahí por defecto. ¿Debería sobrescribirlo o crear uno nuevo por encima o por debajo de este (como el que proporcionaste)? ¿Es necesario server_name?

¿Esto interrumpirá el proceso de renovación de LetsEncrypt si redirijo todo?

¿Estás editando nginx.conf dentro del contenedor de Discourse o en un proxy inverso de nginx externo?

Si es interno, en su lugar deberías hacerlo en el archivo app.yml. Hay varios ejemplos sobre cómo hacerlo.

Si lo estás haciendo en un proxy inverso de nginx externo, puedes crear un nuevo archivo, por ejemplo redirect.conf, en la carpeta /etc/nginx/conf.d con el ejemplo de configuración que proporcioné.

dentro del contenedor. Buscaré soluciones para app.yml. Vi una para carpetas, espero encontrar una para el cambio de dominio. Gracias.

¿Lo has probado?

Sí, lo implementaré en breve. Muchas gracias por tu tiempo.

@itsbhanusharma Estoy implementando el código en este momento. Mi pregunta es si LetsEncrypt se renovará automáticamente, ya que tengo la intención de mantener el servidor antiguo durante un tiempo hasta que Google actualice las URLs. ¿Hay algo que deba agregar para que la renovación de LetsEncrypt no falle debido a este cambio de redirección 301?

¿Puede funcionar esto? Set up Let’s Encrypt with multiple domains / redirects

Quiero excluir .well-known/acme-challenge de la redirección,

problema con redirección 301 y LetsEncrypt