假设以下应用程序环境:
+-----------------+
| App server |
+-----------------+
| | +-------+
| ear1 | | |
| +-web1 (/ctx1) +--<-- http://localhost/ctx1/xxx/ --+ +--<-- http://www.example.com/xxx/
| | | |
| | | proxy |
| ear2 | | |
| +-web2 (/ctx2) +--<-- http://localhost/ctx2/yyy/ --+ +--<-- http://abc.example.com/yyy/
| | | |
+-----------------+ +-------+
如您所见,代理(nginx
在我的例子中)将请求转发到单个应用程序服务器实例,该实例又具有多个具有不同上下文路径的 Web 模块。当然我不希望我的公共服务器暴露内部上下文根和代理它的工作是否很好,包装和解包http请求等。但仍然存在一个大问题:JSF生成的html代码(链接,css,js资源,表单actions) 包含上下文路径,/ctx1
在/ctx2
我的例子中。这就是我想要避免的。
除了使用越来越多不同的应用程序服务器实例(域)之外,我目前没有任何解决方案,导致我的硬件资源逐渐消失。据我了解,我需要使用一些可能在 中注册的包装器来扩展我的 JSF 应用程序faces-config.xml
,这将删除生成的 html 中的上下文前缀。也欢迎任何其他解决方案。
请指出我正确的方向。