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