【问题标题】:custom variable for nginx proxypassnginx proxypass 的自定义变量
【发布时间】:2019-12-20 15:52:22
【问题描述】:

我正在尝试让 proxy_pass 使用自定义变量

location  / {
        set $proxy_pass_dest  destination;
        proxy_pass          http://$proxy_pass_dest;
}

它不起作用。然而:

location  / {

        proxy_pass          http://destination;
}

工作得很好。我做错了什么?

【问题讨论】:

  • 它回答了你的问题stackoverflow.com/a/8635267/11714114 吗?
  • 这取决于 destination 代表什么。如果有域名,则需要解析器,如果有 URI 部分,则需要指定完整的 URI。
  • 有域名。这一切都在 kubernetes 中,http://destination; 工作正常 - 解析器能够完成这项工作。它不适用于变量$proxy_pass_dest,我正在努力找出原因。
  • 好的,我刚刚在 kubernetes 中运行的 nginx pod 中确认了它(使用变量 $proxy_pass_dest:):2019/12/23 09:05:53 [error] 6#6: *157 no resolver defined to resolve destination
  • 如果我使用http://destination;,则 nginx.log 中没有错误,因此名称被解析。显然问题仅限于使用变量。我试过resolver kube-dns.kube-system.svc.cluster.localresolver coredns.kube-system.svc.cluster.local resolver 127.0.0.1,但没有运气。最终得到了根本不使用变量的解决方法。

标签: nginx kubernetes proxypass


【解决方案1】:

我发现的最佳解决方案根本不使用任何变量。为 proxy_pass 使用变量需要完整的域名。这是我的解决方案:

  if ($arg_somearg) {
                proxy_pass          http://destination;
  }
  if ($arg_otherarg) {
                proxy_pass          http://destination;
  }
  proxy_pass          http://destination2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多