StackOverflow 上有多个问题如何使用具有不同 fastcgi 后端的子文件夹或类似但没有任何工作正常的问题 - 经过数小时的尝试和阅读文档(可能缺少一个小细节)我放弃了。
我有以下要求:
- 在
/
php 5.6 应用程序上运行(fastcgi 后端127.0.0.1:9000
) - 在
/crm
php 7.0 应用程序上运行,它必须相信它正在运行/
(fastcgi 后端127.0.0.1:9001
) - 事实上,后端很少,但是有了这两个,我可以自己制作它们
在尝试删除/crm
前缀之前,我尝试先为位置前缀定义单独的 php 上下文。但似乎我做错了什么,因为/crm
每次都使用 .php 的 php 上下文/
。
我实际的精简配置,删除了所有不相关的内容和所有失败的测试:
server {
listen 80;
server_name myapp.localdev;
location /crm {
root /var/www/crm/public;
index index.php;
try_files $uri /index.php$is_args$args;
location ~ \.php$ {
# todo: strip /crm from REQUEST_URI
fastcgi_pass 127.0.0.1:9001; # 9001 = PHP 7.0
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
location / {
root /var/www/intranet;
index index.php;
try_files $uri /index.php$is_args$args;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # 9000 = PHP 5.6
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}