1
votes

I configured Apache Http server version 2.4 as proxy for backend server (Glassfish App Server actually). MPM is worker.

Configuration is mostly default. Configuration for proxy

ProxyPass /context/ http://backend.com:8080/context/ keepalive=On ttl=25 timeout=300 max=50
ProxyPassReverse /context/ http://backend.com:8080/context/

I open page in browser and it sends GET http://example.com/context HTTP/1.1 to Apache. Apache returns response HTTP/1.0 200 OK with Connection: close header. But actual backend server response contains HTTP/1.1 200 OK.

Why does Apache downgrade proxied response from 1.1 to 1.0?

2

2 Answers

1
votes

force-no-vary is the cause. Documentation says:

force-no-vary This causes any Vary fields to be removed from the response header before it is sent back to the client. Some clients don't interpret this field correctly; setting this variable can work around this problem. Setting this variable also implies force-response-1.0.

force-response-1.0 This forces an HTTP/1.0 response to clients making an HTTP/1.0 request. It was originally implemented as a result of a problem with AOL's proxies. Some HTTP/1.0 clients may not behave correctly when given an HTTP/1.1 response, and this can be used to interoperate with them.

0
votes

In my case we were writing PHP using HTTPFoundation's Response object. It defaults to HTTP/1.0.