Nginx

nginx 為某些路由設置條件反向代理

  • December 21, 2021

我有一個 laravel 伺服器,前面是託管在另一台伺服器上的 wordpress。laravel 伺服器正在接收所有流量。我想將特定路由定向到本地 index.php (laravel),並將所有其他路由定向到 wordpress。像這樣:

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

我的 nginx conf 目前有這個:

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/*

問題是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;
}

引用自:https://serverfault.com/questions/1087858