cpj*_*s44 5 php nginx web-server php-fpm
我正在尝试将 Nginx 配置为在同一域的两个不同目录中托管多个基于 PHP 的应用程序。我想要达到的结果是:
http://webserver.local/ > 提供的应用程序/path/to/website
http://webserver.local/app > 提供的应用程序/path/to/php-app
这是我的配置。
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
您的嵌套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;
}
}
Run Code Online (Sandbox Code Playgroud)
始终fastcgi_params在任何fastcgi_param语句之前包含,以避免它们被包含文件的内容无声覆盖。有关详细信息,请参阅此文档。
| 归档时间: |
|
| 查看次数: |
6009 次 |
| 最近记录: |