### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

While running `curl` to reach OpenSearch health endpoint, I receive a binary response instead of plain JSON.

```shell
$ curl -vvv my-domain.us-east-1.opensearch.localhost.localstack.cloud:443/_cluster/health                                                                                                                                                                                                                               
*   Trying 127.0.0.1:443...
* Connected to my-domain.us-east-1.opensearch.localhost.localstack.cloud (127.0.0.1) port 443 (#0)
> GET /_cluster/health HTTP/1.1
> Host: my-domain.us-east-1.opensearch.localhost.localstack.cloud:443
> User-Agent: curl/8.0.1
> Accept: */*
>
< HTTP/1.1 200
< content-type: application/json; charset=UTF-8
< content-encoding: gzip
< Connection: close
< date: Tue, 01 Aug 2023 08:46:35 GMT
< server: hypercorn-h11
< Transfer-Encoding: chunked
<
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
* Failure writing output to destination
* Failed reading the chunked-encoded stream
* Closing connection 0
```

### Expected Behavior

I expect to receive a JSON response without the need to use `--compressed` option in the `curl` command.

 curl -vvv --compressed my-domain.us-east-1.opensearch.localhost.localstack.cloud:443/_cluster/health
*   Trying 127.0.0.1:443...
* Connected to my-domain.us-east-1.opensearch.localhost.localstack.cloud (127.0.0.1) port 443 (#0)
> GET /_cluster/health HTTP/1.1
> Host: my-domain.us-east-1.opensearch.localhost.localstack.cloud:443
> User-Agent: curl/7.81.0
> Accept: */*
> Accept-Encoding: deflate, gzip, br, zstd
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200
< content-type: application/json; charset=UTF-8
< content-encoding: gzip
< Connection: close
< date: Tue, 01 Aug 2023 08:47:06 GMT
< server: hypercorn-h11
< Transfer-Encoding: chunked
<
* Closing connection 0
{"cluster_name":"opensearch","status":"green","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"discovered_master":true,"discovered_cluster_manager":true,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)
```yaml
version: '3.8'
services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
    image: localstack/localstack-pro:latest
    ports:
      - "127.0.0.1:53:53"
      - "127.0.0.1:53:53/udp"
      - "127.0.0.1:443:443"
      - "127.0.0.1:4510-4559:4510-4559"
      - "127.0.0.1:4566:4566"
    environment:
      - DEBUG=1
      - LS_LOG=trace
      - LOCALSTACK_API_KEY=${LOCALSTACK_API_KEY-} # only required for Pro
      - DOCKER_HOST=unix:///var/run/docker.sock
      - OPENSEARCH_ENDPOINT_STRATEGY=domain
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./volume:/var/lib/localstack" # mount Docker volume
    healthcheck:
      disable: true
```

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

```shell
awslocal opensearch create-domain --domain-name my-domain
curl -vvv my-domain.us-east-1.opensearch.localhost.localstack.cloud:443/_cluster/health          
```

### Environment

```markdown
- OS: Windows 10
- LocalStack: 2.2.1.dev20230731233910
```


### Anything else?

Following the guide from the documentation page: [OpenSearch](https://docs.localstack.cloud/user-guide/aws/opensearch/)
consume_data, serve_asgi_adapter, tmp_path
):
    """Tests that, when the proxy consumes (or doesn't consume) the request object's data prior to forwarding,
    the request is forwarded correctly. not using httpserver here because it consumes werkzeug data incorrectly (it
    calls ``request.get_data()``)."""
    @WerkzeugRequest.application
    def _backend_handler(request: WerkzeugRequest):
        data = {
            "data": request.data.decode("utf-8"),
            "args": request.args,
            "form": request.form,
            "files": {
                name: storage.stream.read().decode("utf-8")
                for name, storage in request.files.items()
            },
        }
        return Response(json.dumps(data), mimetype="application/json")
    @WerkzeugRequest.application
    def _proxy_handler(request: WerkzeugRequest):