NGINX, como remover o prefixo de localização em $ fastcgi_script_name

2

Eu já li isso: como remover o bloco de localização de $ uri na configuração do nginx?

mas existe uma maneira de remover o prefixo dos blocos de localização do $ fastcgi_script_name sem usar o regex?

por exemplo:

location /foo/ {
        access_log  /var/log/nginx/access-truc.log  FOO;
        alias          /srv/http/php;
        fastcgi_pass   fpm;
        fastcgi_index  index.php;
        include        fastcgi.conf;
}

(nota: FOO é um formato de log para exibir $ fastcgi_script_name)

fastcgi.conf tem esta linha:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

E eu quero que $fastcgi_script_name esteja definido apenas para bar.php em vez de foo/bar.php para o url http://example.com/foo/bar.php

    
por hl037_ 11.03.2015 / 15:30

1 resposta

2

Eu não encontrei uma maneira de usar $fastcgi_script_name , mas na verdade acho que esse nível extra de indireção é um pouco confuso. Agora uso o seguinte snippet:

server {
    listen      80;
    root        /var/www;
    try_files   $uri $uri/ =404;
    autoindex   on;

    location /openid {
        alias   /opt/openid/www;
        index   index.html index.php;

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include /etc/nginx/fastcgi_params;
        }
    }
}

Uma solicitação para http://host/openid/ definirá SCRIPT_FILENAME corretamente como /opt/openid/www/index.php .

    
por 06.05.2015 / 15:28