nginxconfiguration将api调用映射到特定的php模块

我正在尝试为通过API访问PHP代码的单页应用程序构build一个nginxconfiguration。 我想要做的是将ajax调用的forms/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,以便设置所有正确的环境variables。 它是否在尝试文件匹配时执行此操作?

您需要忽略$fastcgi_script_name并用您重新映射的值replace任何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指令。