What is the name of the domain?
N/A
What is the issue you’re encountering
HTTP 1.1 is used, despite Apache 2 being configured to support h2c and curl confirming it works locally
What steps have you taken to resolve the issue?
Checked the documentation and saw that the option for HTTP/2 is only avaliable for HTTPS. It says this under TLS:
HTTP2 connection
Attempt to connect to origin using HTTP2. Origin must be configured as https.
However, HTTP/2 supports unecrypted connections too and if we are using a cloudflare tunnel for encryption already, there is no point in double encrypting the traffic. That would just slow things down. I suspect this results in a situation where double encryption is perversely faster than single encryption and if cloudflare tunnels work as advertised, the double encryption should be unnecessary and optimal performance would be achieved by using HTTP/2 over port 80.
Cloudflare needs a toggle for HTTP/2 on HTTP. Have it be the equivalent of setting curl’s --http2-prior-knowledge.
What are the steps to reproduce the issue?
- Make a local HTTP server that supports HTTP/2 on port 80 using h2c.
- Setup cloudflare tunnel to make it accessible via a domain/subdomain.
- Connect to it from the domain/subdomain.
- Observe in the server logs that HTTP 1.1 is being used.
- For good measure, run
curl -sI --http2-prior-knowledge localhost
and observe that your web server supports HTTP/2.