Nginx
Nginx + PHP-FPM URI別名和多個php目錄
我正在嘗試將 Nginx 配置為在同一域的兩個不同目錄中託管多個基於 PHP 的應用程序。我試圖達到的結果是:
http://webserver.local/ > 應用程序從
/path/to/website
http://webserver.local/app > 應用程序從
/path/to/php-app
這是我的配置。
- 當我點擊http://webserver.local/時,一切正常(作為 PHP 和非 PHP 資源)。
- 但是,當我轉到http://webserver.local/app/index.php時,PHP 腳本不起作用。我明白
File Not Found
了(但是,文件在/path/to/php-app/index.php
)。- 我創建了一個文件
/path/to/php-app/test.txt
(不是 PHP 的東西),當我轉到http://webserver.local/app/test.txt時,我得到了預期的文本文件。有人可以說明我哪裡出錯了嗎?謝謝 :)
server { listen 80; server_name webserver.local; location / { root /path/to/website; index index.php; location ~ \.php$ { root /path/to/website; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } location ^~ /app { alias /path/to/php-app; index index.php; location ~ \.php$ { root /path/to/php-app; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } }
您的嵌套
location ~ \.php$
塊將找不到您的 PHP 腳本。$document_root
設置/path/to/php-app
為。與仍包含前綴$fastcgi_script_name
的相同。$uri``/app
正確的方法是使用
$request_filename
和刪除你的虛假root
陳述:location ^~ /app { alias /path/to/php-app; index index.php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; } }
始終
fastcgi_params
在任何fastcgi_param
語句之前包含,以避免它們被包含文件的內容默默地覆蓋。有關詳細資訊,請參閱此文件。