修改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
如果您在伺服器主機名稱或IP位址中附加目錄名稱,以便在安裝應用程式(例如http://192.168.33.10/magento2
)時建立基礎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.更新env.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.確認店面
使用網頁瀏覽器前往店面,確認一切都正常運作。
-
開啟網頁瀏覽器,並在位址列中輸入伺服器的主機名稱或IP位址。 例如,
http://192.168.33.10
。下圖顯示一個店面頁面的範例。 如果它顯示如下,表示您的安裝成功!
如果頁面顯示404 (找不到)或無法載入影像、CSS和JS等其他資產,請參閱疑難排解區段。
-
嘗試從瀏覽器存取應用程式目錄。 在位址列中,將目錄名稱附加至伺服器的主機名稱或IP位址:
如果您看到404或「存取遭拒」訊息,表示您已成功限制檔案系統的存取。