Apache mod_代理可以使用params处理GET响应(使用tomcat作为后端)

Apache mod_代理可以使用params处理GET响应(使用tomcat作为后端),apache,tomcat,mod-proxy,Apache,Tomcat,Mod Proxy,我有一个Apache反向代理,用于向后端Apache发送请求,使用mod_jk连接tomcat,应用程序使用java/JSP 在Apache反向代理中,当GET请求中存在不带参数的请求时,我有这样的配置: ProxyRequests Off ProxyPreserveHost On ProxyPass /users/ http://1x2.xxx.4.xx:5xxxx/jsp/app/New/ ProxyPassReverse /users/ http://1x2.xxx.4.xx:5

我有一个Apache反向代理,用于向后端Apache发送请求,使用mod_jk连接tomcat,应用程序使用java/JSP 在Apache反向代理中,当GET请求中存在不带参数的请求时,我有这样的配置:

ProxyRequests     Off
ProxyPreserveHost On
ProxyPass /users/ http://1x2.xxx.4.xx:5xxxx/jsp/app/New/
ProxyPassReverse /users/  http://1x2.xxx.4.xx:5xxxx/jsp/app/New/
CustomLog /home/Apache/logs/proxy_log common
mod_代理日志:

1xx.1xx.3.xx - - [20/Nov/2012:14:07:54 +0200] "GET /users/ HTTP/1.1" 200 3547
1xx.1xx.3.xx - - [20/Nov/2012:14:07:57 +0200] "GET /users/ HTTP/1.1" 200 3547
1xx.1xx.3.xx - - [20/Nov/2012:14:07:58 +0200] "GET /users/index.jsp?event=pi&id=&p= HTTP/1.1" 200 3615
1xx.1xx.3.xx - - [20/Nov/2012:14:08:02 +0200] "GET /users/ HTTP/1.1" 200 3547
1xx.1xx.3.xx - - [20/Nov/2012:14:08:07 +0200] "GET /users/index.jsp?event=pi&id=test&p=test HTTP/1.1" 200 3615
1xx.1xx.3.xx - - [20/Nov/2012:14:16:48 +0200] "GET /users/ HTTP/1.1" 200 3547
1xx.1xx.3.xx - - [20/Nov/2012:14:27:05 +0200] "GET /users/index.jsp?event=pi&id=test&p=test HTTP/1.1" 302 -
1xx.1xx.3.xx - - [20/Nov/2012:14:27:05 +0200] "GET /jsp/app/New/Home.jsp?event=Validated HTTP/1.1" 404 306
1xx.1xx.3.xx - - [20/Nov/2012:14:29:25 +0200] "GET /users/index.jsp?event=pi&id=test&p=test HTTP/1.1" 302 -
1xx.1xx.3.xx - - [20/Nov/2012:14:29:25 +0200] "GET /jsp/app/New/Home.jsp?event=Validated HTTP/1.1" 404 306
1xx.1xx.3.xx - - [20/Nov/2012:15:11:37 +0200] "GET /users/ HTTP/1.1" 200 3547
1xx.1xx.3.xx - - [20/Nov/2012:15:11:44 +0200] "GET /users/index.jsp?event=pi&id=test&p=test HTTP/1.1" 302 -
1xx.1xx.3.xx - - [20/Nov/2012:15:11:45 +0200] "GET /jsp/app/New/Home.jsp?event=Validated HTTP/1.1" 404 306
正如您在每次收到以下响应时所看到的:

"GET /jsp/app/New/Home.jsp?event=Validated HTTP/1.1" 404 306
它失败了

当我尝试在不使用代理服务器的情况下直接使用该页面时,该页面正在工作。

您需要使用Apache Httpd v2.2+并在ProxyPass配置上指定“nocanon”选项,该选项告诉Apache不要规范化请求查询字符串:

ProxyPass /users/ http://1x2.xxx.4.xx:5xxxx/jsp/app/New/ nocanon