将 Magento 管理员重定向到单独的后端

将 Magento 管理员重定向到单独的后端

我需要将 Magento 管理员发送到与商店不同的后端。我有两个问题:

  1. 不知道如何使用正则表达式正确匹配 index.php/admin 和 /admin(index.php/admin 可以工作,因为它与下面的第二个位置匹配);
  2. 当我让 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;
}

相关内容