限制 NGINX 目錄存取權

WHMCS 用.htaccess檔案嚟保護/vendor/目錄,但係 NGINX®會讀取.htaccess檔案。因為咁,個目錄會喺運行 NGINX 嘅伺服器上面失去保護。如果你嘅伺服器用 NGINX ,你就要採取額外嘅步驟嚟保護敏感目錄。

.htaccess檔案入面嘅限制唔會適用喺你嘅系統,你必須執行以下嘅額外步驟。

限制目錄存取 #

適用於 cPanel 及 WHM 84及以後版本

喺 cPanel & WHM 84及以上版本入面,你可以用 cPanel 嘅目錄私隱介面(主頁 » cPanel » 檔案 » 目錄私隱)為呢個目錄增加保護。

如果要保護目錄,請執行以下步驟:

  1. 喺 cPanel 嘅目錄私隱介面(主頁 » cPanel » 檔案 » 目錄私隱)入面揀/whmcs/vendor目錄。
    The Directory Privacy interface in cPanel.
  2. 密碼保護呢個目錄
    Select Password protect this directory in cPanel.
  3. 輸入一個顯示標籤,用嚟輸入受保護目錄嘅名稱
    Enter the directory name in cPanel.

    呢個名只係用作目錄嘅標籤。唔好將佢同目錄嘅實際名稱混淆。
  4. 撳一下儲存。會出現確認訊息。撳返去返去目錄嘅設定。

所有其他控制面板 #

以下步驟需要root 級別存取執行 NGINX 嘅伺服器。如果你冇 root 級別存取權,你需要聯絡你嘅寄存服務供應商或者系統管理員。

如果要限制執行 cPanel & WHM 82版及以上版本嘅伺服器或者其他寄存控制面板上面嘅目錄存取權:

  1. 登入網絡伺服器。
  2. 搵 NGINX 配置範本。
  3. deny指令加入你網站配置嘅server頂部
    server {
        location ^~ /vendor/ {
            deny all;
            return 403;
        }
        ...
    }
    
  4. 儲存你嘅變更,然後重新啟動 NGINX 。

搵緊 NGINX 配置檔案 #

NGINX 有一個非常靈活嘅配置組織。因為咁,你嘅設定檔案可能喺好多唔同嘅地方:

  伺服器類型 預設或者最常見嘅位置
  c 面板同 WHM /etc/nginx/conf.d/users/<username>.conf
  德比安 ® 同埋烏本圖
  • /etc/nginx/sites-available/default
  • /etc/nginx/sites-available/example.com (如果管理員已經為每個網站個別設定咗設定檔案)
  其他伺服器   睇下面。

  其他伺服器 #

如果你喺以上任何一個位置都搵唔到個配置檔案:

  1. 喺你嘅伺服器上面執行以下指令:
    nginx -t
    

    輸出會顯示你伺服器嘅 NGINX 配置檔案嘅當前目錄路徑。例如:

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
  2. 要檢查 NGINX 配置檔案係咪包含任何include指令,請執行以下命令:
    grep include /etc/nginx/nginx.conf
    

    如果grep命令冇返回任何輸出,你可以繼續更改配置。 server指令會存在喺你喺第1步搵到嘅檔案入面。

  3. 如果grep命令返回任何結果,你就要檢查每個include 檔案嘅伺服器指令。例如,呢個輸出會要求你檢查所有四個包含檔案嘅server指令:
    include /etc/nginx/modules-enabled/*.conf;
    include /etc/nginx/mime.types;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    

  重新啟動緊 NGINX #

對 NGINX 作出任何配置變更之後,你必須重新啟動 NGINX 重新載入 NGINX 配置。

  伺服器類型或者操作系統   重新啟動 NGINX 嘅指令
  c 面板同 WHM /usr/local/cpanel/scripts/restartsrv_nginx
CentOS 6 /etc/init.d/nginx reload
CentOS 7 systemctl reload nginx.service
  德比安同烏本圖 systemctl reload nginx