Modifique docroot para mejorar la seguridad

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

El magento2/ El directorio contiene lo siguiente:

  • pub/
  • setup/
  • var/

La aplicación se suministra desde /var/www/html/magento2/pub. El resto del sistema de archivos es vulnerable porque es accesible desde un explorador.
Configuración de la raíz web en pub/ evita 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 desde el pub/ , que es más seguro.

Una nota sobre nginx

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

Cuando se utiliza en el bloque de servidor que define el sitio, la variable nginx.conf.sample reemplaza la configuración docroot del servidor para servir archivos desde el pub/ directorio. 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 el 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. Añada la ruta a su pub/ al directorio DocumentRoot directiva:

    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 eliminarlo.

NOTE
Reemplazar 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 env.php archivo.

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

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

4. Cambiar de modo

Modos de aplicación, que incluyen production y developer, están diseñadas para mejorar la seguridad y facilitar el desarrollo. Como sugieren los nombres, debe cambiar a developer al ampliar o personalizar la aplicación y cambiar a production cuando se ejecuta en un entorno en directo.

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 production modo.

    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 developer modo.

    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 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