我通过 提供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;
}