New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Interaction with HTTP2 (mod_http2) #6
Comments
Cheers, as far as I can tell on a first glance at the code: This seems to be an issue of correct input filter ordering. The proxy_protocol input filter must read before the h2 input filter. And subsequently, for request patching, this will happen on a |
To clarify, are the following statements correct?
|
At this point it's not clear to me where the issue is; icing's comment about this being an ordering issue sounds reasonable based on the reported behaviour, but a quick glance at mod_http2 indicates that it is registering its input-filter after the mod_proxy_protocol input filter (in fact, mod_proxy_protocol registers before mod_ssl, and mod_http2 after mod_ssl). So I'm not sure where the issue is.
Correct.
Apparently. |
Thank you very much for your prompt response. It was extremely helpful. Keep up the good work. I'll monitor this issue to see if/when this gets resolved. |
Is there any progress on this issue yet? I ran into it recently and it halted my http2 rollout :-| |
@smelchior I have not had time to try and figure this out yet. |
experiencing the same issue |
Experienced this as well. OS and package details:
haproxy.cfg:
ProxyProtocol is enabled globally (an exception is made for an internal virtualhost running on a non-default port)
This works as expected for virtual hosts not running HTTP/2: The client IP and port is correctly logged as the fourth item as defined by the global LogFormat directive:
Enabling HTTP/2 on a TLS-enabled virtual host. Other than enabling HTTP/2, this is identical to production, save the obvious differences in certificate, ServerName directive, etc.
Response headers confirm HTTP/2 is being used:
Access log shows the IP and client port of the load balancer, rather than the initiator. Also reconfirms that HTTP/2 is being used.
This GET request is succesful. Sending a POST is not:
|
Me confused here. Is this the module that has become I have no setup where I can verify this module. |
This module looks to be merged into Compiling
HAProxy configured similarly to production as above:
HTTPD configured with project defaults, ProxyProtocol enabled on 4433 and HTTP/2 enabled on the default SSL virtual host and the
|
Thanks, could you try the following patch in your 2.4.x build?
Thanks! |
Compiling with the above patch works as expected:
Switching request type from
Since |
Wonderful, thanks! I applied this to Apache subversion trunk as r1827196 and proposed for backport into 2.4.x. |
…HTTP/2 requests. See also roadrunner2/mod-proxy-protocol#6 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1827196 13f79535-47bb-0310-9956-ffa450edef68
…mod_remoteip f1d5f5d6b8577b2428082050cb03531d7614dba4 - fixes roadrunner2#6
Verified working in our staging environment:
|
Nice! |
@icing Thanks for debugging this and creating the fix! @pgodschalk thanks for backporting the fix to here. |
…HTTP/2 requests. See also roadrunner2/mod-proxy-protocol#6 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1827196 13f79535-47bb-0310-9956-ffa450edef68
When attempting to use mod_proxy_protocol in combination with HTTP2 (mod_http2), that particular configuration fails with:
H2SerializeHeaders
is set toon
or not:a. On every request of a HTTP2 connection:
[proxy_protocol:error] [pid 8565] [client 127.0.0.1:38181] ProxyProtocol: no valid header found
b. On every subsequent request of a HTTP2 connection that doesn't match the original request type the error above. (If the original request type was
GET
thenPOST
s fail with the error etc)HTTP2 is probably a pretty big change to what the different Apache layers do in terms of separating a connection from requests and responses and I'm not intimately familiar with how this is implemented therefor I'm opening an issue both here and over at mod_http2 about this incompatibility.
The text was updated successfully, but these errors were encountered: