ggrandes/apache24-modules

myfixip: Support for mod_http2

Opened this issue · 4 comments

Hello,

Do you have any plans to support mod_http2?

With H2SerializeHeaders off it seems like mod_myfixip has no effect (the hooks probably aren't used) but with H2SerializeHeaders on I get the following (not sure if all 3 are related to myfixip)

[ssl:error] [pid 40] AH02031: Hostname my.example.com provided via SNI, but no hostname provided in HTTP request
[http2:warn] [pid 40] (22)Invalid argument: AH02955: h2_response: invalid header[0] '<html><head>\n'
[core:notice] [pid 6] AH00052: child pid 40 exit signal Segmentation fault (11)

Thanks

Well @mnoorenberghe,
myfixip is a filter that run before any protocol (HTTP/HTTPS); In theory it should work... but If mod_http2 need special care, yes, I will support...

I want to reproduce the error. I need versions... (apache, mod_http2, mod_myfixip, browser/client) and a minimal sample config, can you send me?

This definitely remains an issue. Had to remove myfixip once we enabled http/2; https connections were breaking.

Apache2 2.4.27 (built-in http2 module), myfixip hash 7d002ee, and the basic config to enable it for port 443:

RewriteIPResetHeader on

It didn't break every connection; it just broke certain ones, so this will be a fun one to chase.

ok @jimmy-biznessapps, as more info give to me, I can be faster to solve it :-)

  • ubuntu linux? version?
  • what browser? version?
  • a bit more that "zen" config sample to reproduce?

thnks!

  • Ubuntu 16.04 (although I'm using ondrej's PPA for apache2 to pull in 2.4.27).
  • Browser -- Chrome, latest (61.0.3163.100 official)
  • config sample -- aw geez, man, we have so much config it's a mess.

We were using an AWS Classic ELB in TCP mode with PROXY protocol enabled, and http/2 turned on for port 443.

Also -- and this turned out to be important after we disabled myfixip -- we had the ELB configured for a 300s KeepAlive, but apache2 for only a 5s KeepAliveTimeout. However, simply adjusting the apache2 KeepAliveTimeout wasn't enough to fix the issue; myfixip also had to be removed.

I won't scare you off with our config; we have an enormous number of vhosts (literally thousands), a couple dozen htaccess files peppered everywhere. Also: We are running a PHP backend in php-fpm with apache2 in using mpm_event, with jQuery on the front-end making ajax calls.

The basic issue is (I believe) with ServiceWorker and http2 persistent connections, making multiple large ajax calls on the same connection. The first call would succeed, but all future calls would fail, until apache2 was restarted. And it was odd, because this only recurred with certain calls, not with all of them. The call in question depended on login session data and had roughly ~128KB of POST data (it's the call made when the user "Saves" their design).

I hope this is more helpful.