我正在尝试为通过 API 访问 PHP 代码的单页应用程序构建 nginx 配置。我试图将表单的 ajax 调用映射/api/xxx
到project_directory/php/xxx.php
所以我有一个这样的位置块:-
location ~* /api/(\w+) {
root /path/to/project_directory;
try_files /php/$1.php =404;
... call fastcgi gateway
}
我需要设置 $fastcgi_script_name,以便它设置所有正确的环境变量。当尝试文件匹配时它会这样做吗?
答案1
您需要忽略$fastcgi_script_name
所有指令并将其替换fastcgi_param
为重新映射的值。您的位置块可能以如下方式开始:
location ~* /api/(\w+) {
root /path/to/project_root;
set $my_script_name /php/$1;
try_files $my_script_name =404;
fastcgi_param SCRIPT_NAME $my_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$my_script_name;
...
}
显然要注释掉所有相冲突的fastcgi_param
指令。