
Я обслуживаю 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;
}