2012-02-21 27 views
1

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

我这样做是为了能够通过Facebook登录我的网站。

(注:这是不是一个真正的网站,我必须设置为我的网站名称,我用facebook注册/ etc/hosts文件和Apache虚拟主机。)

在tomcat的server.xml中我设置的连接器元素如下:

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

但是没有为该端口的执行程序共享线程池设置任何东西。

这里有什么不工作:

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

bug 2)然后我得到facebook用户信息的其余部分,并重定向到“/index.html”。浏览器显示我的网址为“http://andyssite2.com/index.html#_=_”,并且这会导致问题,因为我的由index.html加载的javascript没有为散列_ = _准备好,它以某种方式进入游戏。我也尝试使用绝对URL重定向到我的网站,并得到_ = _的散列相同的问题,我的问题是什么导致这个spurios散列被添加。

我有最新的Apache Centos6。

安迪

回答

1

我有Apache作为前端和在它后面运行Liferay门户(也运行的CentOS)Tomcat的非常相似的配置。

我发现与研究

最好的办法是使用的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" /> 

你可以在我的申请你的配置,我希望这能解决你的问题。