gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:51:08 25 4
gpt4 key购买 nike

我想处理 2 个案例: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

我让 (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 匹配的 location block 是 location =/。参见 this document了解详情。

例如:

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

第一个 location block 只匹配根 URI /,第二个 location block 匹配任何其他 URI。 URI 的其余部分自动附加到 /confirm/。参见 this document了解详情。

关于Nginx - 如果 $request_uri 存在 proxy_pass 一个 url,否则另一个 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63178511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com