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 ?
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org