Modifique docroot para mejorar la seguridad

En una instalación estándar con un servidor web Apache, Adobe Commerce está instalado en la raíz web predeterminada: /var/www/html/magento2.

El directorio magento2/ contiene lo siguiente:

  • pub/
  • setup/
  • var/

La aplicación se proporcionó desde /var/www/html/magento2/pub. El resto del sistema de archivos es vulnerable porque es accesible desde un explorador.
Al establecer la raíz web en el directorio pub/, se impide que los visitantes del sitio tengan acceso a áreas confidenciales del sistema de archivos desde un explorador.

En este tema se describe cómo cambiar el docroot de Apache en una instancia existente para que sirva archivos del directorio pub/, que es más seguro.

Una nota sobre nginx

Si está usando nginx y el archivo nginx.conf.sample incluido en el directorio de instalación, probablemente ya esté sirviendo archivos del directorio pub/.

Cuando se usa en el bloque de servidor que define el sitio, la configuración de nginx.conf.sample anula la configuración de docroot del servidor para servir archivos del directorio pub/. Por ejemplo, consulte la última línea de la siguiente configuración:

# /etc/nginx/sites-available/magento

upstream fastcgi_backend {
   server  unix:/run/php/php7.4-fpm.sock;
}

server {

         listen 80;
         server_name 192.168.33.10;
         set $MAGE_ROOT /var/www/html/magento2ce;
         include /var/www/html/magento2ce/nginx.conf.sample;
}

Antes de empezar

Para completar este tutorial, necesita acceder a una instalación en funcionamiento que se ejecute en una pila LAMP:

  • Linux
  • Apache (2.4+)
  • MySQL (5.7+)
  • PHP (7.4)
  • Elasticsearch (7.x) o OpenSearch (1.2)
  • Adobe Commerce (2.4+)
NOTE
Consulte Requisitos previos y la Guía de instalación para obtener más información.

1. Edite la configuración del servidor

El nombre y la ubicación del archivo host virtual dependen de la versión de Apache que esté ejecutando. Este ejemplo muestra el nombre y la ubicación del archivo host virtual en Apache v2.4.

  1. Inicie sesión en el servidor de aplicaciones.

  2. Edite el archivo host virtual:

    code language-bash
    vim /etc/apache2/sites-available/000-default.conf
    
  3. Agregue la ruta de acceso al directorio pub/ a la directiva DocumentRoot:

    code language-conf
    <VirtualHost *:80>
    
             ServerAdmin webmaster@localhost
             DocumentRoot /var/www/html/magento2ce/pub
    
             ErrorLog ${APACHE_LOG_DIR}/error.log
             CustomLog ${APACHE_LOG_DIR}/access.log combined
    
             <Directory "/var/www/html">
                         AllowOverride all
             </Directory>
     </VirtualHost>
    
  4. Reinicie Apache:

    code language-bash
    systemctl restart apache2
    

2. Actualice la dirección URL base

Si agregó un nombre de directorio al nombre de host o la dirección IP del servidor para crear la dirección URL base al instalar la aplicación (por ejemplo, http://192.168.33.10/magento2), debe quitarla.

NOTE
Reemplace 192.168.33.10 con el nombre de host del servidor.
  1. Inicie sesión en la base de datos:

    code language-bash
    mysql -u <user> -p
    
  2. Especifique la base de datos que creó al instalar la aplicación:

    code language-shell
    use <database-name>
    
  3. Actualice la dirección URL base:

    code language-shell
    UPDATE core_config_data SET value='http://192.168.33.10' WHERE path='web/unsecure/base_url';
    

3. Actualice el archivo env.php

Anexe el siguiente nodo al archivo env.php.

'directories' => [
    'document_root_is_pub' => true
]

Consulte la referencia env.php para obtener más información.

4. Cambiar de modo

Los modos de aplicación, que incluyen production y developer, están diseñados para mejorar la seguridad y facilitar el desarrollo. Como sugieren los nombres, debe cambiar al modo developer al ampliar o personalizar la aplicación y cambiar al modo production cuando se ejecute en un entorno activo.

Cambiar entre modos es un paso importante para comprobar que la configuración del servidor funciona correctamente. Puede cambiar entre los modos con la herramienta CLI:

  1. Vaya al directorio de instalación.

  2. Cambiar a modo production.

    code language-bash
    bin/magento deploy:mode:set production
    
    code language-bash
    bin/magento cache:flush
    
  3. Actualice el explorador y compruebe que la tienda se muestra correctamente.

  4. Cambiar a modo developer.

    code language-bash
    bin/magento deploy:mode:set developer
    
    code language-bash
    bin/magento cache:flush
    
  5. Actualice el explorador y compruebe que la tienda se muestra correctamente.

5. Verificar la tienda

Vaya a la tienda en un navegador web para comprobar que todo funciona.

  1. Abra un explorador web e introduzca el nombre de host o la dirección IP del servidor en la barra de direcciones. Por ejemplo, http://192.168.33.10.

    La siguiente figura muestra una página de tienda de muestra. Si se muestra de la siguiente manera, su instalación ha sido un éxito.

    Tienda que verifica una instalación correcta

    Consulte la sección de solución de problemas si la página muestra un archivo 404 (no encontrado) o no puede cargar otros recursos, como imágenes, CSS y JS.

  2. Intente acceder a un directorio de aplicaciones desde un explorador. Añada el nombre del directorio al nombre de host o a la dirección IP del servidor en la barra de direcciones:

    Si ve un mensaje 404 o el mensaje "Acceso denegado", ha restringido correctamente el acceso al sistema de archivos.

    Acceso denegado

recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995