Назад | Перейти на главную страницу

NGINX, как удалить префикс местоположения в $ fastcgi_script_name

Я уже читал это: как удалить блок местоположения из $ uri в конфигурации nginx?

но есть ли способ удалить префикс блоков местоположения из $ fastcgi_script_name без использования регулярного выражения?

например :

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

(примечание: FOO - это формат журнала для отображения $ fastcgi_script_name)

fastcgi.conf имеет эту строку:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

И я хочу $fastcgi_script_name установить только bar.php вместо того foo/bar.php для URL http://example.com/foo/bar.php

Я не нашел способа использовать $fastcgi_script_name, но на самом деле я нахожу этот дополнительный уровень косвенного обращения немного запутанным. Теперь я использую следующий фрагмент:

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

Просьба к http://host/openid/ установит SCRIPT_FILENAME правильно /opt/openid/www/index.php.