如何在if语句中重写和代理

问题描述 投票:0回答:1

我有像

https://sourceURL/api/fcst/login/login?ProCode=420000
这样的原始url,我想配置proxy_pass让它转发到
https://targetURL/pestiot/api/fcst/login/login?ProCode=420000
。 这是我当前的配置

location ~ ^/api {
    if ($request_uri ~* "ProCode=420000") {
        rewrite ^(/api/fcst.*)$ /pestiot$1 break;
        proxy_pass https://targetURL;
        break;
    }
}

这似乎总是行不通。最终目标整个网址中不存在 pestiot。 目前,

  • 当我使用
    https://sourceURL/api/fcst/login/login?ProCode=420000
    时,响应是 403 Forbidden。
  • 但是
    https://targetURL/pestiot/api/fcst/login/login?ProCode=420000
    有效
  • https://targetURL/api/fcst/login/login?ProCode=420000
    回复404
nginx https nginx-reverse-proxy
1个回答
0
投票

这个配置可以工作。我的错误是这样的

proxy_set_header Host $http_host;

由于我曾经代理过一次originalUrl,所以这句话应该是

proxy_set_header Host $proxy_host;
© www.soinside.com 2019 - 2024. All rights reserved.