首頁 >後端開發 >php教程 >如何設定 Nginx 以提供來自具有不同根路徑的兩個子資料夾的內容?

如何設定 Nginx 以提供來自具有不同根路徑的兩個子資料夾的內容?

Susan Sarandon
Susan Sarandon原創
2024-11-23 00:52:12402瀏覽

How to Configure Nginx to Serve Content from Two Subfolders with Different Root Paths?

子資料夾的Nginx 位置配置

在本文中,我們將探討如何設定Nginx 來提供來自兩個子資料夾的內容,其中一個位於根路徑和特定URL 處的另一個路徑。

考慮以下目錄結構:

/var/www/myside/
├── static
├── manage

我們的目標是使/static 資料夾可透過根URL(例如http://example.org/)訪問,並且/manage 文件夾可透過/manage 存取(例如http ://example.org/manage)。在本例中, /manage 資料夾包含 Slim 的 PHP 框架程式碼,實際的 PHP 檔案位於 /var/www/mysite/manage/public/index.php。

Nginx 設定

為了實現這一點,我們可以使用 Nginx 的 location 指令。這是一個可能的配置:

server {
  listen 80;
  server_name example.org;
  error_log /usr/local/etc/nginx/logs/mysite/error.log;
  access_log /usr/local/etc/nginx/logs/mysite/access.log;
  root /var/www/mysite;

  location / {
    root /var/www/mysite/static;
    index index.html;
  }

  location /manage {
    alias /var/www/mysite/manage/public;
    index index.php;

    if (!-e $request_filename) {
      rewrite ^ /manage/index.php last;
    }

    location ~ \.php$ {
      if (!-f $request_filename) {
        return 404;
      }
      fastcgi_pass 127.0.0.1:9000;

      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;

    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
  }
}

說明

讓我們分解配置:

  • 第一個位置:
  • 第一個位置:
  • 第一個位置:
  • 第一個位置區塊(/ ): 指定應從根目錄提供/static 資料夾URI。

第二個位置區塊 (/manage): 使用別名指令將 /manage URI 對應到 /var/www/mysite/manage/public 目錄。

第三個位置區塊(/manage 內的位置 ~ .php$):

設定 PHP 檔案處理/manage 資料夾。

最終位置區塊(伺服器層級的位置 ~ .php$): 配置 /static 資料夾中的 PHP 檔案處理。

別名與 root 的使用

使用別名時,Nginx 從以下位置提供檔案指定目錄,同時保留原始 URI。這對我們的目的很有用,因為我們希望 /manage URI 指向 /var/www/mysite/manage/public 目錄。

相反,root 會改變位置區塊的根目錄,因此它不適合我們想要從不同位置提供不同子資料夾的場景。

重寫規則index.php

重寫規則可確保對 /manage 資料夾中不存在的檔案的請求重定向到 index.php。這允許 Slim 的 PHP 應用程式處理請求。

PHP 檔案處理PHP 檔案處理的兩個位置區塊都包含執行 PHP 腳本的必要配置,例如 FastCGI設定和變數。 fastcgi_pass 指令將 PHP 請求導向到 PHP FastCGI 伺服器。 最後注意事項請確保您的 PHP FastCGI 伺服器正在運作並正確設定。此設定應該允許您正確地提供 /static 和 /manage 子資料夾中的內容。

以上是如何設定 Nginx 以提供來自具有不同根路徑的兩個子資料夾的內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn