请帮忙,尝试设置动态反向 nginx 代理,但失败了

请帮忙,尝试设置动态反向 nginx 代理,但失败了

请帮忙,我正在尝试设置动态反向代理,这样我就不需要直接更改 nginx。我想要实现的是创建一个默认位置,如下所示:

location ~ ^/staging/v1/(.*) {
      resolver 4.2.2.2
      proxy_pass https://$1$is_args$args;
}

因此假设 Nginx 反向代理服务器 URL 是 example.com,并且我访问 example.com/staging/v1/test.com,则反向代理服务器将使用所有路径和参数将我的请求代理到 test.com。

但是,这似乎会产生很多错误。首先,它会加载空白页。但如果我在 nginx 位置根目录添加域,如下所示:

  location / {

               proxy_pass  test.com;
       }

这将使类似 example.com/staging/v1/test.com/app/login.png 的请求开始工作。

我需要帮助

答案1

您需要发送有效的Host请求的 HTTP 标头。您需要将 URI 的其余部分拆分为两部分,并使用第一部分来设置 usingproxy_set_header指令。检查回答以了解更多信息。

由于主机名部分显然不能包含斜线,因此您可以改用以下正则表达式模式:

location ~ ^/staging/v1/([^/]+)(?:/(.*))? {
    resolver 4.2.2.2;
    proxy_set_header Host $1;
    proxy_pass https://$1/$2$is_args$args;
}

相关内容