gpt4 book ai didi

NGINX 代理传递请求 URL 的一部分

转载 作者:行者123 更新时间:2023-12-02 19:26:58 24 4
gpt4 key购买 nike

我想在我的 NGINX 配置中执行以下操作:我想代理传递路径和查询参数但不包括第一个路径参数 (path1)。

请求地址

https://my-domain.com/path1/path2?query1=some-query

我想要这个代理传递给

http://localhost:8000/path2?query1=some-query

我试过以下位置 block

location /path1/path2/ {
proxy_pass http://localhost:8000$request_uri;
proxy_http_version 1.1;
}

但是,这并没有到达正确的端点,因为我认为它也包含 path1 参数。我有几个不同的 path2 路由,所以我希望能够轻松地捕获和重定向它们 - 而不必像这样手动定义每个路由:

location /path1/path2a/ {
proxy_pass http://localhost:8000/path2a?query1=some-query;
proxy_http_version 1.1;
}

location /path1/path2b/ {
proxy_pass http://localhost:8000/path2b?query1=some-query;
proxy_http_version 1.1;
}

location /path1/path2c/ {
proxy_pass http://localhost:8000/path2c?query1=some-query;
proxy_http_version 1.1;
}

附加编辑:

我也做不到

location /path1/ {
proxy_pass http://localhost:8000/;
proxy_http_version 1.1;
}

因为我已经有 location/path1/ block 升级到不同端点的 WebSocket 连接:

location /path1/ {
proxy_pass http://localhost:9000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}

我在网上搜索了很多,但找不到适合我的特定场景的配置。

最佳答案

这真的很简单:

location /path1/ {
proxy_pass http://localhost:8000/;
proxy_http_version 1.1;
}

阅读this详情问答。

更新

在OP澄清了他的问题后,这个解决方案就不能用了。

如果所有附加路径共享共同的后缀 path2:

location /path1/path2 {
rewrite ^/path1(.*) $1 break; # remove '/path1' URI prefix
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
}

如果不是,请将 location/path1/path2 替换为 location ~ ^/path1/(?:path2a|path2b|path2c)

如果您需要向后端传递与请求附带的参数不同的查询参数,请使用

set $args query1=some-query;

在位置 block 内。

关于NGINX 代理传递请求 URL 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62297684/

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