我需要将 Magento 管理员发送到与商店不同的后端。我有两个问题:
- 不知道如何使用正则表达式正确匹配 index.php/admin 和 /admin(index.php/admin 可以工作,因为它与下面的第二个位置匹配);
- 当我让 Nginx 匹配位置(当前只有 /admin)时,我不知道如何正确转发请求,因此我从后端收到“找不到文件”,因为它试图将其作为 php 文件打开而不是发送到主处理程序 index.php。
这是我目前为管理员提供的信息
location ~ ^/(admin|index.php/admin)/ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass server1:9000;
#fastcgi_index index.php;
include fastcgi_params;
}
这是与 index.php/admin 和整个网站匹配的第二个指令
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass server2:9000;
fastcgi_index index.php;
include fastcgi_params;
}
答案1
我没有使用两个单独的位置指令,而是在单个位置内放置了一个 if 子句:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass server2:9000;
if ($request_uri ~ /admin/) {
fastcgi_pass server1:9000;
}
fastcgi_index index.php;
include fastcgi_params;
}