【问题标题】:using apache to proxy tomcat and can't do sendRedirect使用 apache 代理 tomcat 并且不能做 sendRedirect
【发布时间】:2012-03-12 00:05:51
【问题描述】:

我在 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 时,我检查是否存在会话。如果不是,我创建一个并将“散列”请求参数保存为会话的属性。然后根据他们的 OAuth 服务器流程方案重定向到 facebook。当 facebook 重定向回我的 loginservlet 时,HttpSession 存在,但“hash”属性丢失了。 (我宁愿保存在会话中,也不愿保存在 cookie 中。)

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

我有最新的 Centos6 apache。

安迪

【问题讨论】:

    标签: apache session tomcat servlets mod-proxy


    【解决方案1】:

    我有非常相似的配置,前端是 apache,后面是运行 liferay 门户的 tomcat(也运行 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" />
    

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

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 2012-03-15
      相关资源
      最近更新 更多