<p>When I am accessing a Istio gateway <code>NodePort</code> from the Nginx server using <code>curl</code>, I am getting response properly, like below:</p>
<pre><code>curl -v &quot;http://52.66.195.124:30408/status/200&quot;
*   Trying 52.66.195.124:30408...
* Connected to 52.66.195.124 (52.66.195.124) port 30408 (#0)
&gt; GET /status/200 HTTP/1.1
&gt; Host: 52.66.195.124:30408
&gt; User-Agent: curl/7.76.1
&gt; Accept: */*
&gt; 
* Mark bundle as not supporting multiuse
&lt; HTTP/1.1 200 OK
&lt; server: istio-envoy
&lt; date: Sat, 18 Sep 2021 04:33:35 GMT
&lt; content-type: text/html; charset=utf-8
&lt; access-control-allow-origin: *
&lt; access-control-allow-credentials: true
&lt; content-length: 0
&lt; x-envoy-upstream-service-time: 2
&lt; 
* Connection #0 to host 52.66.195.124 left intact
</code></pre>
<p>The same when I am configuring through Nginx proxy like below, I am getting <code>HTTP ERROR 426</code> through the domain.</p>
<p>Note: my domain is HTTPS - <a href="https://dashboard.example.com" rel="noreferrer">https://dashboard.example.com</a></p>
<pre><code>server {
        server_name dashboard.example.com;
        location / {
               proxy_pass       http://52.66.195.124:30408;
        }
}
</code></pre>
<p>Can anyone help me to understand the issue?</p>

Rahul Radhakrishnan
<p>HTTP 426 error means <a href="https://httpstatuses.com/426" rel="noreferrer">upgrade required</a>:</p>
<blockquote>
<p>The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.</p>
</blockquote>
<p>or <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/426" rel="noreferrer">another info</a>:</p>
<blockquote>
<p>The HTTP <strong><code>426 Upgrade Required</code></strong> client error response code indicates that the server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.</p>
</blockquote>
<p>In your situation, you need to check what version of the HTTP protocol you are using. It seems too low. Look at <a href="https://github.com/envoyproxy/envoy/issues/2506" rel="noreferrer">this thread</a>. In that case, you had to upgrade from <code>1.0</code> to <code>1.1</code>.</p>
<p>You need to upgrade your HTTP protocol version in NGINX config like there:</p>
<blockquote>
<p>This route is for a legacy API, which enabled NGINX cache for performance reason, but in this route's proxy config, it missed a shared config  <a href="http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version" rel="noreferrer"><code>proxy_http_version 1.1</code></a>, which default to use HTTP 1.0 for all NGINX upstream.</p>
<p>And Envoy will return  <code>HTTP 426</code>  if the request is  <code>HTTP 1.0</code>.</p>
</blockquote>
