<p>I have attached AWS ACM provided SSL certificate to NLB. NLB will forward request to nginx ingress. Nginx is giving me the following error. <code>The plain HTTP request was sent to HTTPS port</code>.
I have set the following annotation in nginx ingress.</p>
<ul>
<li>nginx.ingress.kubernetes.io/force-ssl-redirect: false</li>
<li>nginx.ingress.kubernetes.io/ssl-redirect: false</li>
</ul>
<p>I have set following annotation in nginx ingress service which is running behind NLB.</p>
<ul>
<li>service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http</li>
<li>service.beta.kubernetes.io/aws-load-balancer-ssl-cert: &quot;certificate</li>
<li>arn&quot; service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https</li>
<li>service.beta.kubernetes.io/aws-load-balancer-type: nlb</li>
</ul>

<p>For this error :</p>
<blockquote>
<p>The plain HTTP request was sent to HTTPS port</p>
</blockquote>
<p>Change your port configuration in <strong>Nginx</strong> service like, your <strong>target port</strong> in <em>HTTPS</em> section should be <strong>http</strong> instead of <strong>https</strong></p>
<pre><code>ports:
  - name: https
    **targetPort: http**
</code></pre>
<p>Here the annotation for reference</p>
<pre><code>service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: &quot;60&quot;
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: &quot;true&quot;
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:ap-southeast-1:xxxxxxx:certificate/8991ftt8-69e0-4e7d-1164-yy0aae19da90v
service.beta.kubernetes.io/aws-load-balancer-type: nlb
</code></pre>
