![nginx 配置将 api 调用映射到特定的 php 模块](https://linux22.com/image/671918/nginx%20%E9%85%8D%E7%BD%AE%E5%B0%86%20api%20%E8%B0%83%E7%94%A8%E6%98%A0%E5%B0%84%E5%88%B0%E7%89%B9%E5%AE%9A%E7%9A%84%20php%20%E6%A8%A1%E5%9D%97.png)
我正在尝试为通过 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
指令。