Nginx-如果$request_uri存在proxy_pass一个url,否则传递另一个url



我想处理两种情况:test.example.comtest.example.com/ABC

  1. 如果输入的url是基域(test.example.com(,我希望proxy_pass是给定的端点(比如example.com/home(。

  2. 如果给定test.example.com/ABC,我希望proxy_passexample.com/confirm/ABC

  • test.example.com=https://example.com/home
  • test.example.com/ABC=https://example.com/confirm/ABC

我让(1(像这样工作:

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name test.example.com;
location / {
proxy_pass https://example.com/home;
}
}

但我不知道该怎么说";如果$request_uri存在,proxy_pass到不同的端点";。我试过了:

location / {
if ($request_uri) {
proxy_pass https://example.com/confirm/$request_uri;
}

proxy_pass https://example.com/home;
}

我怎样才能做到这一点?

$request_uri始终存在且从不为空。域根的URI是一个单独的/(即使它没有显示在浏览器的地址栏中(。

与该URI匹配的CCD_ 11块是CCD_。有关详细信息,请参阅本文档。

例如:

location = / {
proxy_pass https://example.com/home;
}
location / {
proxy_pass https://example.com/confirm/;
}

第一个location块仅与根URI/匹配,第二个location块与任何其他URI匹配。URI的剩余部分自动附加到/confirm/。有关详细信息,请参阅本文档。

相关内容

  • 没有找到相关文章

最新更新