首页 > 解决方案 > 带有 URL 重写和 proxy_pass 的 Nginx 转发

问题描述

我在将请求转发到另一个域时寻求 nginx 配置方面的帮助。

代理场景:

https://service1.com/downloads -> https://service2.com/app/downloads 

https://service1.com/downloads?param1=a&param2=b -> https://service2.com/app/downloads?param1=a&param2=b

浏览器应该一直有左侧 URL(service1)。但服务 2 端点不同,它有额外的参数“应用程序”。

我在没有考虑使用以下配置的服务 2 端点中的“app”参数的情况下做到了这一点:

location /downloads {
    set $upstream_endpoint https://service2.com;
    proxy_pass $upstream_endpoint;
  }

但是当我想在调用 service2 端点时附加一些附加参数('app')时,我需要帮助。

我正在尝试 rewrite 和 proxy_pass 但没有运气。我已启用上游日志,但没有看到预期的上游 URL

location /downloads {
  set $upstream_endpoint https://service2.com;
  proxy_pass $upstream_endpoint/app/$args;
}

提前致谢

标签: nginxmod-rewritenginx-locationproxypassnginx-reverse-proxy

解决方案


尝试这个,

location /downloads {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass https://service2.com;
}

推荐阅读