Obter curinga de localização do nginx dentro do bloco de localização?

1

Estou tentando configurar uma API na qual posso acessar a API "foobar" por meio do URL http://my-apis.com/foobar/route . Isso é o que eu tenho até agora:

location ~ ^/foobar(/.*)$ {
    root /var/www/mysite/foobar/public;

    ... more fastcgi stuff ...

    fastcgi_param SCRIPT_FILENAME $document_root/index.php$1;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

A API está roteando para um aplicativo de estrutura Slim e atualmente roteia com êxito para o index.php correto, mostrando um nginx 404/403 sempre que o URL não iniciar com /foobar . No entanto, o caminho passado para o Slim (que parece ser representado por $ 1 na linha 6) ainda é o /foobar/route completo. Isso significa que eu tenho que acrescentar todas as minhas rotas Slim com /foobar , o que, embora eu possa usar um grupo Slim, ainda é uma dor. Eu gostaria de poder passar apenas o /route bit para Slim.

Existe uma maneira de extrair apenas o bit correspondente da diretiva location? Desde $ 1 dá a rota completa. Alternativamente, eu poderia fazer isso com algum tipo de reescrita, mas não sei o suficiente sobre Slim.

Qualquer ajuda seria muito apreciada!

Obrigado!

    
por Raiden616 23.12.2017 / 11:52

1 resposta

1

SCRIPT_FILENAME é o caminho para o script e não para o URI original. Os scripts selecionam as informações do caminho de PATH_INFO ou decodificam o URI original (usando REQUEST_URI ).

Isso pode funcionar para você:

fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATH_INFO $1;
    
por 23.12.2017 / 14:25