nginx SCRIPT_FILENAME 中没有扩展名的文件名

nginx SCRIPT_FILENAME 中没有扩展名的文件名

我通过 提供php和可执行文件nginx。因此,我将请求 URL 的扩展名分开为

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

location ~ \.c$ {
fastcgi_pass  unix:/var/run/fcgiwrap.socket;
fastcgi_index  index;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

对于PHP,运行的脚本带有.php扩展名;但对于可执行文件,.hello.c是原始脚本,其编译后的可执行文件为hello文件。

我需要hello在访问时运行该文件https://example.com/hello.c

nginx 中是否有任何指令可以代替$fastcgi_script_name获取不带扩展名的脚本名称?

答案1

在该位置捕获它。

例如:

location ~ ^(.*)\.c$ {
    fastcgi_pass  unix:/var/run/fcgiwrap.socket;
    fastcgi_index  index;
    include /etc/nginx/fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$1;
}

相关内容