Nginx

Nginx + PHP-FPM URI別名和多個php目錄

  • October 3, 2017

我正在嘗試將 Nginx 配置為在同一域的兩個不同目錄中託管多個基於 PHP 的應用程序。我試圖達到的結果是:

http://webserver.local/ > 應用程序從/path/to/website

http://webserver.local/app > 應用程序從/path/to/php-app

這是我的配置。

有人可以說明我哪裡出錯了嗎?謝謝 :)

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語句之前包含,以避免它們被包含文件的內容默默地覆蓋。有關詳細資訊,請參閱此文件

引用自:https://serverfault.com/questions/876332