Java 在Apache代理背后使用Tomcat时,getRequestURI中的应用程序前缀存在问题
我的Tomcat在Apache服务器后面有问题。我将Apache设置为用作AJP代理,它似乎可以工作,如果我在Apache服务器上打开浏览器,就会从Tomcat服务器获得输出。我对请求URI有问题。我在程序中使用它,不幸的是它没有给我正确的URI: 当我访问此页面时:Java 在Apache代理背后使用Tomcat时,getRequestURI中的应用程序前缀存在问题,java,apache,tomcat,proxy,ajp,Java,Apache,Tomcat,Proxy,Ajp,我的Tomcat在Apache服务器后面有问题。我将Apache设置为用作AJP代理,它似乎可以工作,如果我在Apache服务器上打开浏览器,就会从Tomcat服务器获得输出。我对请求URI有问题。我在程序中使用它,不幸的是它没有给我正确的URI: 当我访问此页面时: http://<apache-server>/test 在日志中返回: http://<apache-server>/app/test /app/test http:///app/test /应用程序/
http://<apache-server>/test
在日志中返回:
http://<apache-server>/app/test /app/test
http:///app/test /应用程序/测试
而不是我需要的:
http://<apache-server>/test /test
http:///test /试验
apache服务器上的配置如下:
<VirtualHost *:80>
ProxyRequests off
ProxyPreserveHost on
ProxyPass / ajp://<tomcat-server>:8009/pps/
ProxyPassReverse / ajp:/<tomcat-server>:8009/app/
</VirtualHost>
代理请求关闭
代理主机
ProxyPass/ajp://:8009/pps/
ProxyPassReverse/ajp:/:8009/应用程序/
tomcat服务器的server.xml中包含以下内容:
<Connector port="8009"
enableLookups="false"
redirectPort="8443"
protocol="AJP/1.3" />
我发现一些页面建议在tomcat中以ROOT用户身份部署应用程序,但这似乎非常肮脏…既然您希望以ROOT用户身份部署应用程序,为什么这样做会很肮脏?我不希望在tomcat服务器上以ROOT用户身份部署应用程序,而只希望在远程apache服务器上以ROOT用户身份部署应用程序。apache服务器将此域映射到tomcat,但这不是唯一的应用程序。我将在同一个tomcat服务器上为另一个应用程序创建另一个子域,它需要以相同的方式工作。当然,我可以运行多个tomcat实例,但这将是一个巨大的资源浪费。
<Connector port="8009"
enableLookups="false"
redirectPort="8443"
protocol="AJP/1.3" />