Nome de arquivo sem extensão no nginx SCRIPT_FILENAME

Nome de arquivo sem extensão no nginx SCRIPT_FILENAME

Eu sirvo phparquivos executáveis ​​via nginx. Assim, separo pela extensão da URL da solicitação como

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;
}

Com PHP, o script a ser executado possui .phpextensão; mas para arquivos executáveis, .hello.cé o script original e seu executável compilado é helloo arquivo.

Preciso executar o helloarquivo ao visitar o https://example.com/hello.c.

Existe alguma diretiva no nginx em vez de $fastcgi_script_nameobter o nome do script sem extensão?

Responder1

Capture-o no local.

Por exemplo:

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

informação relacionada