使用apache代理tomcat而不能执行sendRedirect

时间:2012-02-21 16:53:31

标签: apache session tomcat servlets mod-proxy

我在Linux上使用Apache将所有对站点的请求代理到tomcat,这样我就可以使用虚拟主机并使用https。我在tomcat中的webapp是/ epub,但我设置了apache proxypass和proxypassreverse来映射/到http // localhost:8081 / epub /

我做了所有这些,以便我可以通过Facebook登录我的网站。

(注意:这不是一个真实的网站,我必须为我在facebook上注册的网站名称设置/ etc / hosts和apache虚拟主机。)

在tomcat server.xml中,我按如下方式设置了Connector元素:

<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
       proxyPort="80"
       proxyName="andyssite2.com"/>

但没有为此端口设置执行程序共享线程池的任何内容。

这是什么不起作用:

错误1)当我访问我的loginservlet时,我会检查会话是否存在。如果不是,我创建一个并将“hash”请求参数保存为会话的属性。然后根据他们的OAuth服务器流程方案重定向到Facebook。当facebook重定向回我的loginservlet时,HttpSession存在,但“hash”属性丢失。 (我宁愿在会话中保存而不是在cookie中保存。)

错误2)然后我获取其余的facebook用户信息,并重定向到“/index.html”。浏览器将我的网址显示为“http://andyssite2.com/index.html#_=_”,这会导致问题,因为我的index.html加载的javascript没有准备好以某种方式发挥作用的哈希_ = _。我也尝试使用绝对网址重定向到我的网站,并使用_ = _的哈希问题得到同样的问题,我的问题是导致这个spurios哈希被添加的原因。

我有最新的Centos6 apache。

安迪

1 个答案:

答案 0 :(得分:1)

我有非常类似的配置,apache作为前端,tomcat后面运行liferay门户(也运行CentOS)。

我发现研究的最佳方法是使用mod_proxy_ajp:

的httpd.conf:

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
ProxyPass / ajp://localhost:8009/

server.xml中:

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />

您可以将我的配置应用于我的,我希望这可以解决您的问题。