我已经读过: 如何从nginxconfiguration$ uri中删除位置块?
但有没有一种方法来剥离位置块的前缀从$ fastcgi_script_name不使用正则expression式?
例如 :
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
我还没有find使用$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 。