nginx 设置某些路由的条件反向代理

nginx 设置某些路由的条件反向代理

我有一个 laravel 服务器,它位于托管在另一台服务器上的 wordpress 前面。laravel 服务器正在接收所有流量。我想将特定路由定向到本地 index.php (laravel),并将所有其他路由定向到 wordpress。如下所示:

/a/* --> laravel server (localhost)
/b/* --> laravel server (localhost)
/* --> wordpress (separate server)

我的 nginx 配置目前有这个:

index index.html index.htm index.php;

location ~* /[a|b]/.+ {
  try_files $uri $uri/ /index.php?$query_string;
}

location ^~ / {
  proxy_pass https://10.0.1.44;
  proxy_set_header   Host             $host;
  proxy_set_header   X-Real-IP        $remote_addr;
  proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}

wordpress 正在接收所有路由。我如何强制在本地服务器上由 index.php 提供服务/a/*/b/*

答案1

问题是location ^~ /指令性的。这使得前缀匹配明确,并阻止 nginx 查看正则表达式匹配。

请尝试以下操作:

location ~*^/[ab] {
     try_files $uri $uri/ /index.php?$query_string;
}

location / {
    proxy_pass https://10.0.1.44;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}

相关内容