How to set proxy_pass https in nginx ingress Kubernetes

5/21/2020

I'm trying to create a rule to forward https request to an https backend with an Kubernetes ngnix ingress controller. So far I was not able to create a working rule. I've tried several ingress statements in my k8s manifest:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hs-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
#    nginx.ingress.kubernetes.io/ssl-redirect: "true"
#    ingress.kubernetes.io/ssl-redirect: "true"
#    ingress.kubernetes.io/ssl-passthrough: "true"
#    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
#    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
#    ingress.kubernetes.io/backend-protocol: "HTTPS"
#    ingress.kubernetes.io/ssl-passthrough: "true"
  namespace: heartbleed-test
spec:
  rules:
  - http:
      paths:
        - path: /banana
          backend:
            serviceName: hs-service
            servicePort: 443

After some digging I figured out that the problem is the proxy_pass property in the ingress rule on the controller:

proxy_pass: http://heartbleed-test-hs-service-443;

When i change http to https everything works as expected. So how do I set this property from my k8s manifest?

-- Fluppi
kubernetes
kubernetes-ingress
nginx-ingress

1 Answer

5/21/2020

If your host paths are the same with your rule and backend service, then you don't have to specify rewrite rule, just path for backend service. But if paths are different, then consider using nginx.ingress.kubernetes.io/rewrite-target: /pathYouWantToProxyPassTo annotation; otherwise, you will get 404 backend error

-- hdhruna
Source: StackOverflow