apache - 如何在子域中的反向代理后面运行PrimeFaces?

标签 apache jsf-2 primefaces subdomain reverse-proxy

我已经使用PrimeFaces构建了一个应用程序,并希望在apache反向代理后面运行该应用程序。

我的目标网址看起来像这个http://myserverurl.org:8080/myapplication/

我想通过像http://myapplication.myserverurl.org这样的子域访问应用程序。

我已经在Apache中配置了VirtualHost:

<VirtualHost *:80>
    ServerName myapplication.myserverurl.org
    ProxyPass / http://myserverurl.org:8080/myapplication/
    ProxyPassReverse / http://myserverurl.org:8080/myapplication/
</VirtualHost>

效果不是很好。我可以看到JSF页面,但是没有应用CSS等。我可以看到第一个请求已正确重定向,但随后的请求(用于加载jQuery,CSS等)却没有。

他们尝试访问类似http://myapplication.myserverurl.org/myapplication/faces/javax.faces.resource/primefaces.js?ln=primefaces的URL,这显然是错误的。它们不能再包含/myapplication/路径,因为代理已经重定向到该路径。

我该如何解决这个问题?这是PrimeFaces问题还是我的反向代理配置问题?

最佳答案

使用(或不使用)AJP与解决此特定问题无关。

Primefaces内部使用上下文路径变量来包含CSS和Javascript资源。即使使用AJP,您最终也会得到:

/unwantedAppContext/javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces

解决此问题的方法可以添加另一个代理处理,以处理不需要的上下文。这可能不是最好的解决方案,但它可以工作。

<VirtualHost *:80>

    ServerName myapplication.myserverurl.org

    ProxyPass /myapplication/ http://myserverurl.org:8080/myapplication/
    ProxyPassReverse /myapplication/ http://myserverurl.org:8080/myapplication/

    ProxyPass / http://myserverurl.org:8080/myapplication/
    ProxyPassReverse / http://myserverurl.org:8080/myapplication/
</VirtualHost>

通行证的顺序很重要。

icefaces论坛中也报告了此问题
http://www.icesoft.org/JForum/posts/list/4433.page#sthash.h1qSqiYg.dpbs

关于apache - 如何在子域中的反向代理后面运行PrimeFaces?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13139319/

相关文章:

css - 无法删除 accordionPanel 选项卡 primefaces 中的顶部白线

apache - DoS 和暴力攻击有什么区别?

Mac OS X 上的 PHP 和 MySQL : Access denied for GUI user

jsf - JSF返回带有纯/原始XHTML/XML/EL源的空白/未分析页面,而不是呈现的HTML输出

jsf-2 - 为什么div中包裹的outputText没有渲染?

java - 正则表达式可选,在 primefaces 中使用allowTypes

apache - 由于 UAC win10,Xampp 功能受到限制。如何解决?

apache - Proxy_pass 因 Spring 安全性而失败

java - session 范围 bean - 如何处理多用户数据

javascript - Primefaces SelectOneMenu 在按下 ctrl+key(热键)时选择项目