修改docroot以提高安全性
在使用Apache Web Server进行的标准安装中,Adobe Commerce安装到默认Web根目录: /var/www/html/magento2
。
magento2/
目录包含以下内容:
pub/
setup/
var/
从/var/www/html/magento2/pub
为该应用程序提供服务。 由于可从浏览器访问,因此文件系统的其余部分易受攻击。
将webroot设置为pub/
目录可阻止站点访客从浏览器访问文件系统的敏感区域。
本主题介绍如何更改现有实例上的Apache docroot以从pub/
目录提供文件,这种方式更安全。
关于nginx的说明
如果您使用的是nginx以及安装目录中包含的nginx.conf.sample
文件,则您可能已经在提供来自pub/
目录的文件。
在定义站点的服务器块中使用时,nginx.conf.sample
配置将覆盖服务器的docroot设置,以提供来自pub/
目录的文件。 例如,请参见以下配置中的最后一行:
# /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;
}
开始之前
要完成本教程,您需要访问在LAMP栈栈上运行的工作安装:
- Linux
- Apache (2.4+)
- MySQL (5.7及更高版本)
- PHP (7.4)
- Elasticsearch(7.x)或OpenSearch (1.2)
- Adobe Commerce (2.4+)
1.编辑服务器配置
虚拟主机文件的名称和位置取决于您运行的Apache版本。 此示例显示了Apache v2.4上虚拟主机文件的名称和位置。
-
登录到应用程序服务器。
-
编辑您的虚拟主机文件:
code language-bash vim /etc/apache2/sites-available/000-default.conf
-
将指向
pub/
目录的路径添加到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>
-
重新启动Apache:
code language-bash systemctl restart apache2
2.更新您的基本URL
如果在安装了应用程序(例如http://192.168.33.10/magento2
)时,将目录名称附加到服务器的主机名或IP地址以创建基本URL,则需要将其删除。
192.168.33.10
替换为您的服务器主机名。-
登录到数据库:
code language-bash mysql -u <user> -p
-
指定安装应用程序时创建的数据库:
code language-shell use <database-name>
-
更新基本URL:
code language-shell UPDATE core_config_data SET value='http://192.168.33.10' WHERE path='web/unsecure/base_url';
3.更新环境文件php
将以下节点附加到env.php
文件。
'directories' => [
'document_root_is_pub' => true
]
有关详细信息,请参阅env.php引用。
4.切换模式
应用程序模式(包括production
和developer
)旨在提高安全性并使开发更容易。 根据名称建议,在扩展或自定义应用程序时,您应该切换到developer
模式,在实时环境中运行时应该切换到production
模式。
在模式之间切换是验证服务器配置是否正常运行的重要步骤。 您可以使用CLI工具在模式之间切换:
-
转到安装目录。
-
切换到
production
模式。code language-bash bin/magento deploy:mode:set production
code language-bash bin/magento cache:flush
-
刷新浏览器并验证店面是否正确显示。
-
切换到
developer
模式。code language-bash bin/magento deploy:mode:set developer
code language-bash bin/magento cache:flush
-
刷新浏览器并验证店面是否正确显示。
5.验证店面
在Web浏览器中转到店面以验证一切正常。
-
打开Web浏览器,并在地址栏中输入服务器的主机名或IP地址。 例如,
http://192.168.33.10
。下图显示了一个店面页面的示例。 如果它显示如下,则表示您的安装成功!
如果页面显示404(未找到)或无法加载图像、CSS和JS等其他资产,请参阅疑难解答部分。
-
尝试从浏览器访问应用程序目录。 在地址栏中将目录名称附加到服务器的主机名或IP地址:
如果您看到404或“访问被拒绝”消息,则表示您已成功限制对文件系统的访问。