Nginx Ingress Controller does not set X-Forwarded-Host



我已经用我的微服务设置了nginx Ingress控制器;该微服务使用Hateoas产生链接。我有以下入口集。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "server: imemywork";
    nginx.org/ssl-services: "mic-ser-service"
    nginx.org/client-max-body-size: "1024m"
    nginx.ingress.kubernetes.io/server-snippet: |
      location /service(|/)(.*) {
        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Host  $host/service;
        proxy_set_header X-Forwarded-Port  $server_port;
      }
  name: mic-ser-ingress
spec:
  tls:
    - hosts:
      - imemywork.com
      secretName: mic-ser-tls-certificate
  rules:
    - host: api.imemywork.com
      http:
        paths:
        - path: /service(|/)(.*)
          backend:
            serviceName: mic-ser-service
            servicePort: 8080

x-forwarded-*标头都没有设置在请求上;由于未设置这些设置,因此Hateoas链接正在使用HTTP和浏览器发送的主机来产生链接。我把它们放在错误的地方吗?我还试图将位置块移至配置 - 尼普特(Configuration-Snippet(,没有运气。还有其他东西,我需要在Nginx Ingress Controller中设置/启用?

bts,在配置snippet下,在配置下有more_set_header仅将标题添加到响应中,而不是对服务器的请求。

我认为x-forwaded-*标题默认设置在Ingress-nginx中。您可能需要将X-Forwarded Proto标头更新为" Https"到达您的应用程序时。不幸的是,目前尚无标准的网站入口可用来覆盖X-Forwarded-*标头。但是,可以解决解决此问题的工作。

您可以编写自定义入口插件,该插件将负责重写X-Forwarded-*标头。如此评论所述

更改标头x-forwarded-port的值,而无需使用可以使用插件进行自定义模板。https://github.com/kubernetes/ingress-nginx/tree/master/rootfs/etc/nginx/lua/plugins

local ngx = ngx
local _M = {}
function _M.rewrite()
  if ngx.var.http_cf_connecting_ip then
    ngx.log(ngx.ERR, "Changing x-forwarded-port to 443")
    ngx.var.pass_port = 443
  end
end
return _M

更改变量的条件可以检查任何其他标题(例如将更改限制为特定主机(使用configmap是可以将插件作为文件安装https://github.com/kubernetes/ingress-nginx/blob/master/charts/ingress-nginx/values.yaml#l396-l404

相关内容

  • 没有找到相关文章

最新更新