当URL路径中有特殊字符时,将Apache ProxyPass或Mod_jk与Tomcat一起使用

时间:2014-01-22 23:44:52

标签: java apache tomcat servlets proxy

我正在努力解决ProxyPass中的问题。我已经尝试使用Apache和Nginx用tomcat设置Proxypass。除了URL中有任何字符外,一切都很好。 我不知道它是Apache中的错误还是什么,我从Apache作为代理程序在我的程序中得到的请求URI与使用没有代理的Tomcat不同。我在Java Servlet中使用"request.getRequestURI()"。 例如,如果URL是

/movies/logs, logs

使用Apache或Nginx设置ProxyPass或Mod_jk我得到了:

/movies/logs,%20logs

如果我直接使用Tomcat,我得到了:

/movies/logs%2C%20logs

理想情况下,我希望URL与我在Tomcat中收到的URL相同。有人可以帮我解决问题吗?

提前非常感谢!

1 个答案:

答案 0 :(得分:1)

默认情况下,Apache会在进一步传递URL之前对其进行规范化,显然tomcat单独执行它会有所不同。要阻止mod_proxy修改您的URL,请将nocanon关键字添加到ProxyPass指令中。

请注意,空格和逗号在RFC 1738中被认为是不安全的,不应使用未转义。