Ingress gateway cannot receive grpc when behind nginx

Hi. I use both of nginx ingress controller and ingress gateway. Like this.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: GRPC
    nginx.ingress.kubernetes.io/upstream-vhost: sample.sample.com
  name: sample
  namespace: sample
spec:
  rules:
  - host: sample.sample.com
    http:
      paths:
      - backend:
          serviceName: custom-ingressgateway
          servicePort: 80
  tls:
  - hosts:
    - sample.sample.com
    secretName: sample.com

And My VirtualSerivce is very simple

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: sample
  namespace: sample
spec:
  gateways:
  - sample-gateway
  hosts:
  - sample.sample.svc.cluster.local
  - sample.kakaopay.com
  http:
  - match:
    - port: 27000
    route:
    - destination:
        host: sample.sample.svc.cluster.local
        port:
          number: 27000

When I use simple http(s) request, there is no problem. However when I use GRPC request, sometimes nginx gives below error.

no connection data found for keepalive http2 connection while sending request to upstream

When I use only nginx, it works well.
I guess the problem is coming between nginx and ingress gateway.

I use nginx config is something like below.

keep-alive: "60"
upstream-keepalive-connections: "2048"
upstream-keepalive-requests: "3"
upstream-keepalive-timeout: "10"

If I set upstream-keepalive-timeout to 0, there is no problem.
However I think that is not a solution because that mean turn off the keep-alive.

So I believe if I set some config for keep-alive request on ingress gateway, I can fix this.
However I don’t know how I can adjust.

Should I rebuild proxyv2 image?

Any suggestions or advice will be very appreciated.