子資料夾的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; } }
說明
讓我們分解配置:
第二個位置區塊 (/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中文網其他相關文章!