Nginx-ingressでX-Forwarded-Protoの設定方法

Ingressのannotationsにconfiguration-snippetを追加する

  annotations:
      nginx.ingress.kubernetes.io/configuration-snippet: |
         proxy_set_header X-Forwarded-Port 443;
         proxy_set_header X-Forwarded-Proto "https";

Configmap(ingress-nginx-controller)に以下を追加

data:
  use-forwarded-headers: 'true'

これだけではHeaderの中がこのようになる

"x-forwarded-for":"xxx.xxx.xxx.xxx","x-forwarded-host":"xxxxxx","x-forwarded-proto":"http, https","x-scheme":"http","x-forwarded-port":"80, 443",

x-forwarded-protoとx-forwarded-portを"https"と'443'のみにするにはNginx.tmplの変更が必要である。
Nginx.tmplの変更手順は以下の通りである
1 動いているnginx-ingessからnginx.tmplをエクスポートする

 kubectl exec -it ingress-nginx-controller-5fd6cdcf78-qht8p -n ingress-nginx cat /etc/nginx/template/nginx.tmpl > nginx.tmpl

2 nginx.tmplから次を削除する

            {{ $proxySetHeader }} X-Forwarded-Host       $best_http_host;
            {{ $proxySetHeader }} X-Forwarded-Proto      $pass_access_scheme;

3 Configmapを作成する

kubectl create configmap nginx-template  --from-file=nginx.tmpl
  1. Nginx ingressのデプロイメントに次の項目を追加
        volumeMounts:
          - mountPath: /etc/nginx/template
            name: nginx-template-volume
            readOnly: true
      volumes:
        - name: nginx-template-volume
          configMap:
            name: nginx-template
            items:
            - key: nginx.tmpl
              path: nginx.tmpl