【问题标题】:NGINX proxy_pass or proxy_redirectNGINX proxy_pass 或 proxy_redirect
【发布时间】:2020-01-22 03:32:15
【问题描述】:

需要有关 Nginx proxy_pass 的帮助。

来自 Nginx 外部的 URL 将像这样被命中: http://some-IP:8080/v2/platform/general/activity/plan?.....

我的下游服务如下所示: http://another-IP:8080/activity/plan?...

我想摆脱

/v2/平台/一般

从原始公共 url 并像上面一样调用我的下游服务。

在 Nginx 中,如何将公共访问 URL 重定向到下游服务?

我试过这个:

location /v2/platform/general/ {
  rewrite ^/(.*) /$1 break;
  proxy_redirect off;
  proxy_pass http://another-IP:8080;
  proxy_set_header Host $host;

但它不起作用,感谢任何帮助。

【问题讨论】:

    标签: nginx


    【解决方案1】:

    proxy_passproxy_redirect 具有完全不同的功能。 proxy_redirect 指令仅涉及更改 3xx 状态消息中的 Location 响应标头。详情请见this document

    您的rewrite 语句除了阻止对URI 的进一步修改之外没有任何作用。此行需要删除,否则将禁止proxy_pass 映射 URI。见下文。

    proxy_pass 指令可以通过将 URI 值附加到 proxy_pass 值来映射 URI(例如,从 /v2/platform/general/foo/foo),该值与 location 值一起使用。详情请见this document

    例如:

    location /v2/platform/general/ {
        ...
        proxy_pass http://another-IP:8080/;
    }
    

    仅当您的上游服务器未正确响应值 another-IP:8080 时,您可能需要设置 Host 标头。

    如果您的上游服务器生成 3xx 状态响应且 Location 标头值的值不正确,您可能需要添加一个或多个 proxy_redirect 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-29
      • 2019-01-22
      • 2013-07-15
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多