nginx 配置将 api 调用映射到特定的 php 模块

nginx 配置将 api 调用映射到特定的 php 模块

我正在尝试为通过 API 访问 PHP 代码的单页应用程序构建 nginx 配置。我试图将表单的 ajax 调用映射/api/xxxproject_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指令。

相关内容