Apache 到 tomcat 代理不起作用
Posted
技术标签:
【中文标题】Apache 到 tomcat 代理不起作用【英文标题】:Apache to tomcat proxy is not working 【发布时间】:2017-02-20 00:42:00 【问题描述】:我有 apache 2.4 和 1 个 tomcat(连接器端口 - 8081 和 AJP - 8009)服务器(都在同一个 linux 机器上),我在 webapps 目录中有一个名为“MyApp”的应用程序文件夹。
Tomcat 直接 URL 是 -http://localhost:8081/MyApp/MyApp --> 此链接加载正常并显示图像,jquery 和 js 工作正常。
我正在使用下面提到的 mod_proxy 代理从 apache 到 tomcat 的所有请求 -
ProxyPass /MyApp ajp://localhost:8009/MyApp/MyApp
ProxyPassReverse /MyApp ajp://localhost:8009/MyApp/MyApp
现在,当我尝试通过 Web 服务器 URL 访问它时,会加载 URL,但 /u01/tomcat/webapps/MyApp 目录中的图像、css、jquery 不起作用。
如果我尝试加载图像的直接 URL,例如 - http://localhost/MyApp/images/logo.jpg 它不起作用,
在图片的正文中,我看到了 -
HTTP 状态 404 - /MyApp/MyApp/images/incidentReport.jpg 见上一行,它正在添加一个 ''MyApp' 来获取图像
另一方面,tomcat URL [ localhost:8081/MyApp/images/logo.jpg ] 加载正常。
可能是什么问题?该应用程序的开发人员已将其设计为应与双“MyApp”一起使用,即 localhost:8081/MyApp/MyApp
为了完成这项工作,我还需要在 webserver/tomcat 上做什么?
【问题讨论】:
【参考方案1】:您需要按照以下步骤操作:
第 1 步:在配置 Apache 之前,您应该启用必要的模块。
a2enmod proxy
a2enmod proxy_http
第 2 步:接下来,您将修改 /etc/apache2/sites-enabled
内的默认配置文件 000-default.conf
以设置“代理”功能。
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:8081/
ProxyPassReverse / http://0.0.0.0:8081/
ServerName localhost
</VirtualHost>
第 3 步:接下来,您将修改 server.xml 文件。
<Host name="www.drew-jocham.com" appbase="webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="resumesite_log." suffix=".txt"
pattern="common"/>
<Context path="" docBase="/MyApp/MyApp" debug="0" reloadable="true"/>
</Host>
完成配置后,您需要重新启动云服务器才能使更改生效。执行以下命令重启Apache:service apache2 restart
就是这样!
阅读更多:https://medium.com/@ldclakmal/deploy-a-java-web-application-in-digitalocean-882226dcdbd5
【讨论】:
以上是关于Apache 到 tomcat 代理不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Zuul 代理在 Tomcat vai SpringBootServlet 上不起作用
使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作
使用 node-http-proxy 从 NodeJS 到 Apache 的反向代理不起作用