nginx+;php fpm。如何重写?

nginx+;php fpm。如何重写?,nginx,rewrite,Nginx,Rewrite,我有一个主机配置文件的以下部分 location / { try_files $uri /frontend.php; } location /backend/ { try_files $uri /backend.php; } location ~ \.php$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fas

我有一个主机配置文件的以下部分

location / {
    try_files           $uri /frontend.php;
}

location /backend/ {
    try_files           $uri /backend.php;
}

location ~ \.php$ {
    include             fastcgi_params;
    fastcgi_pass        127.0.0.1:9000;
    fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

如何仅使用nginx规则从$\u服务器['REQUEST\u URI']中删除“/backend”?

使用map指令创建新的REQUEST URI变量,然后使用此新变量设置fastcgi\u param REQUEST\u URI。经过测试,效果良好

### update REQUEST_URI
map $request_uri $new_request_uri {
  default $request_uri;               # for frontend request, still use $request_uri
  ~^/backend(?P<suffix>.*)$ $suffix;  # for backend request, only use the suffix after "/backend"
}

server {
  ...

  location ~ \.php$ {
    include        fastcgi_params;
    fastcgi_pass        127.0.0.1:9000;
    fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $new_request_uri;
  }
}
###更新请求#
映射$request\u uri$new\u request\u uri{
默认$request_uri;#对于前端请求,仍然使用$request_uri
~^/backend(?P.*)$$suffix;#对于后端请求,仅在“/backend”之后使用后缀
}
服务器{
...
位置~\.php${
包括fastcgi_参数;
fastcgi_pass 127.0.0.1:9000;
fastcgi\参数脚本\文件名$document\根$fastcgi\脚本\名称;
fastcgi_param REQUEST_URI$new_REQUEST_URI;
}
}