> On 31 May 2017, at 22:44, André Warnier (tomcat) <a...@ice-sa.com> wrote: > > On 31.05.2017 21:52, Nicholas Cottrell wrote: >>> On 5/31/17 8:42 AM, Nicholas Cottrell wrote: >>>> Hi All! >>>> >>>> I'm having a problem setting up an existing webapp from Apache >>>> 2.2/Tomcat6 on a new server running Centos 7, and the following >>>> packages: >>>> >>>> httpd 2.4.6-45.el7.centos.4 tomcat.noarch >>>> 7.0.69-11.el7_3 @updates tomcat-native.x86_64 >>>> 1.1.34-1.el7 @epel >>>> >>>> For debugging I have enabled AJP/1.3 and 8009 and HTTP on 8080, >>>> then use Apache to ProxyPass. >>>> >>>> With my initial configuration, data from a form POST is not >>>> available via request.getParameter: >>>> >>>> ProxyPass / ajp://localhost:8009/ <ajp://localhost:8009/> >>>> <ajp://localhost:8009/ <ajp://localhost:8009/>> retry=1 >>>> acquire=3000 timeout=600 Keepalive=On ProxyPassReverse / >>>> ajp://localhost:8009/ <ajp://localhost:8009/> <ajp://localhost:8009/ >>>> <ajp://localhost:8009/>> >>>> >>>> But changing it to this fixes everything: >>>> >>>> ProxyPass / http://localhost:8080/ <http://localhost:8080/> >>>> <http://localhost:8080/ <http://localhost:8080/>> retry=1 >>>> acquire=3000 timeout=600 Keepalive=On ProxyPassReverse / >>>> http://localhost:8080/ <http://localhost:8080/> <http://localhost:8080/ >>>> <http://localhost:8080/>> >>>> >>>> In the broken instance, request.getParameter("x") returned null, >>>> but request.getReader() returned bytes with "x=123" so seems that >>>> Apache is sending the POST body but Tomcat is not processing it >>>> correctly, yes? >>>> >>>> Please also see >>>> https://stackoverflow.com/questions/44167876/problems-with-post-parame >>>> <https://stackoverflow.com/questions/44167876/problems-with-post-parame> >>> ters-with-tomcat-ajp-on-apache-2-4-but-not-2-2 >>>> <https://stackoverflow.com/questions/44167876/problems-with-post-param >>>> <https://stackoverflow.com/questions/44167876/problems-with-post-param> >>> eters-with-tomcat-ajp-on-apache-2-4-but-not-2-2> >>>> for my steps so far. >>>> >>>> I would prefer to switch back to AJP for the proxy, since I >>>> understand it is more performant, right? Should I try forcing a >>>> Tomcat 8 install to see if the problem persists there too? >>> >>> If you call request.getReader/getInputStream before any of the >>> request.getParameter family of methods, then all request.getParameter* >>> methods will return null. That's because Tomcat must consume the >>> request body in order to parse POST parameters. If you call >>> request.getReader/getInputStream, then Tomcat assumes that you will be >>> handling the request body (and any associated parameters therein). >>> >>> Is it possible that you are "damaging" the request by inspecting the >>> request body? >> >> I've been thinking about that but I don't call getReader/getInputStream >> anywhere myself. >> Also, the fact that accessing the same page via 8080 directly to Tomcat >> works, but via Apache/AJP through Tomcat's port 8009 works fine, and setting >> the proxy to use the 8080 also works. >> > > There must be a typo in the phrase above, or else what are you complaining > about ?
Sorry - via AJP and port 8009 does NOT work, and I don't want to switch production to Proxying via HTTP since I understand that's much less performant. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org