我在 Ubuntu 14.04 系统上安装了 Apache 和 Wildfly。现在我想让 Wildfly(本地http://localhost:8080
)可从 Apache(http://webserver/wildfly
)访问。我该怎么做?
到目前为止,我已经启用了两个模块:proxy
和proxy_http
。并且我在文档末尾添加了/etc/apache2/apache2.conf
:
ProxyRequests off
ProxyPass /wildfly/ http://localhost:8080/
ProxyPassReverse /wildfly/ http://localhost:8080/
编辑:
现在一半可以工作了,但路径转换不正确。我在 Wildfly 上运行的一个应用程序的路径是:
http://webserver/wildfly/testproj/Index.xhtml
但其页面上的所有链接均按如下方式处理:
http://webserver/testproj/Page1.xhtml
http://webserver/testproj/Page2.xhtml
http://webserver/testproj/Page3.xhtml
而不是这样:
http://webserver/wildfly/testproj/Page1.xhtml
http://webserver/wildfly/testproj/Page2.xhtml
http://webserver/wildfly/testproj/Page3.xhtml
如果我在本地运行 Wildfly,一切都会正常。这让我相信 Apache 反向代理配置中一定存在错误。对吗?我必须做什么才能让 Apache 解析正确的地址/链接?
答案1
我希望您解决了您的问题,但如果其他人需要此问题的答案,这里是解决方案,
对于部署在 EAR 文件之外的 Web 应用程序(WAR 部署)
在 web-inf 文件夹中
MyApp/src/main/webapp/WEB-INF/
添加包含此内容的 jboss-web.xml 文件,其中 / 是根部署,如果您希望将其作为根部署,只需将“/”更改为“testproj”。
<jboss-web>
<context-root>/</context-root>
</jboss-web>
EAR 文件
从官方文档(请查看参考资料)中,您可以发现在 EAR 文件中,上下文根在 application.xml 文件中定义。在下面的例子中,web-client.war 的上下文根是 bank,因此应用程序设置为 /bank,这意味着 URL 将为 www.domaine.com/bank
<module>
<ejb>bank-ejb.jar</ejb>
</module>
<module>
<web>
<web-uri>web-client.war</web-uri>
<context-root>bank</context-root>
</web>
</module>