我想处理两种情况:test.example.com
和test.example.com/ABC
。
-
如果输入的url是基域(
test.example.com
(,我希望proxy_pass
是给定的端点(比如example.com/home
(。 -
如果给定
test.example.com/ABC
,我希望proxy_pass
到example.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/
。有关详细信息,请参阅本文档。