Cómo mover la raíz web de Nginx a una nueva ubicación en Ubuntu 22.04

Introducción

En Ubuntu, el servidor web Nginx almacena sus documentos en /var/www/html, que generalmente se encuentra en el sistema de archivos raíz junto con el resto del sistema operativo. Sin embargo, a veces es útil mover la raíz del documento a otra ubicación, como un sistema de archivos montado separado. Por ejemplo, si sirve varios sitios web desde la misma instancia de Nginx, colocar la raíz del documento de cada sitio en su propio volumen le permite escalar en respuesta a las necesidades de un sitio o cliente específico.

En esta guía, moverá la raíz del documento de Nginx a una nueva ubicación.

Requisitos previos

Para completar esta guía, necesitará:

Utilizaremos el nombre de dominio your_domain en este tutorial, pero debe sustituirlo por su propio nombre de dominio.

  • A new location for your document root. In this tutorial, we will use the /mnt/volume-nyc3-01 directory for our new location. If you are using Block Storage on DigitalOcean, this guide will show you how to create and attach your volume. Your new document root location is configurable based on your needs, however. If you are moving your document root to a different storage device, you will want to select a location under the device’s mount point.

Paso 1 — Copiar archivos a la nueva ubicación

En una instalación nueva de Nginx, la raíz del documento está ubicada en /var/www/html. Sin embargo, siguiendo las guías previas, has creado una nueva raíz de documento, /var/www/tu_dominio/html. Es posible que también tengas raíces de documentos adicionales. En este paso, estableceremos la ubicación de nuestras raíces de documentos y copiaremos los archivos relevantes a su nueva ubicación.

Puedes buscar la ubicación de tus raíces de documentos usando grep. Vamos a buscar en el directorio /etc/nginx/sites-enabled para limitar nuestro enfoque a los sitios activos. La bandera -R asegura que grep imprima tanto la línea con la directiva root como el nombre completo del archivo en su salida:

  1. grep -R "root" /etc/nginx/sites-enabled

Si seguiste los tutoriales previos en un servidor nuevo, el resultado se verá así:

Output
/etc/nginx/sites-enabled/your_domain: root /var/www/your_domain/html; /etc/nginx/sites-enabled/default: root /var/www/html; /etc/nginx/sites-enabled/default: # deny access to .htaccess files, if Apache's document root /etc/nginx/sites-enabled/default:# root /var/www/your_domain;

Si tienes configuraciones preexistentes, tus resultados pueden diferir de lo que se muestra aquí. En cualquier caso, puedes usar la información de grep para asegurarte de que estás moviendo los archivos deseados y actualizando los archivos de configuración apropiados.

Ahora que has confirmado la ubicación de tu raíz de documento, puedes copiar los archivos a su nueva ubicación con rsync. Usando la bandera -a se conservan los permisos y otras propiedades del directorio, mientras que -v proporciona una salida detallada para que puedas seguir el progreso de la sincronización:

Nota: Asegúrese de que no haya una barra diagonal al final del directorio, que puede agregarse si utiliza la finalización de pestañas. Cuando hay una barra diagonal al final, rsync volcará el contenido del directorio en el punto de montaje en lugar de transferirlo a un directorio html contenedor.

  1. sudo rsync -av /var/www/your_domain/html /mnt/volume-nyc3-01

Verá una salida como la siguiente:

Output
sending incremental file list created directory /mnt/volume-nyc3-01 html/ html/index.html sent 318 bytes received 39 bytes 714.00 bytes/sec total size is 176 speedup is 0.49

Con nuestros archivos en su lugar, pasemos a modificar nuestra configuración de Nginx para reflejar estos cambios.

Paso 2 — Actualización de los archivos de configuración

Nginx utiliza tanto archivos de configuración globales como específicos del sitio. Modificaremos el archivo de bloque del servidor para nuestro proyecto your_domain: /etc/nginx/sites-enabled/your_domain.

Nota: Recuerde reemplazar your_domain con su nombre de dominio, y recuerde que estará modificando los archivos de bloque del servidor que se generaron cuando ejecutó el comando grep en el Paso 1.

Comience abriendo /etc/nginx/sites-enabled/your_domain en un editor:

  1. sudo nano /etc/nginx/sites-enabled/your_domain

Encuentre la línea que comienza con root y actualícela con la nueva ubicación raíz. En nuestro caso, esto será /mnt/volume-nyc3-01/html:

/etc/nginx/sites-enabled/your_domain
server {

        root /mnt/volume-nyc3-01/html;
        index index.html index.htm index.nginx-debian.html;
        . . .
}
. . .

Mantén un ojo abierto por cualquier otro lugar donde veas la ruta raíz del documento original mostrada por grep en el Paso 1, incluyendo en alias o reescrituras. También deberás actualizar estos para reflejar la nueva ubicación de la raíz del documento.

Cuando hayas realizado todos los cambios necesarios, guarda y cierra el archivo.

Paso 3 — Reiniciando Nginx

Una vez hayas terminado de realizar los cambios de configuración, puedes reiniciar Nginx y probar los resultados.

Primero, asegúrate de que la sintaxis sea correcta:

  1. sudo nginx -t

Si todo está en orden, debería devolver:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Si la prueba falla, localiza y soluciona los problemas.

Una vez que la prueba pase, reinicia Nginx:

  1. sudo systemctl restart nginx

Cuando el servidor haya reiniciado, visita tus sitios afectados y asegúrate de que estén funcionando como se espera. Una vez que te sientas cómodo de que todo está en orden, no olvides eliminar la copia original de los datos:

  1. sudo rm -Rf /var/www/your_domain/html

Ahora has movido con éxito la raíz del documento de Nginx a una nueva ubicación.

Conclusión

En este tutorial, cubrimos cómo cambiar la raíz del documento de Nginx a una nueva ubicación. Esto puede ayudarte con la administración básica del servidor web, como gestionar eficazmente varios sitios en un único servidor. También te permite aprovechar dispositivos de almacenamiento alternativos como el almacenamiento de bloques de red, lo que puede ser útil para escalar un sitio web a medida que cambian sus necesidades.

Si estás gestionando un sitio web ocupado o en crecimiento, es posible que te interese aprender cómo configurar Nginx con HTTP/2 para aprovechar su alta velocidad de transferencia de contenido.

Source:
https://www.digitalocean.com/community/tutorials/how-to-move-an-nginx-web-root-to-a-new-location-on-ubuntu-22-04