Имя файла без расширения в 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;
}

Связанный контент