Я уже читал это: как удалить блок местоположения из $ 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
.