在Apache代理后面使用Liferay时,在完成struts操作后忽略重定向

时间:2016-04-01 13:38:41

标签: apache tomcat proxy liferay liferay-6

我在Apache代理后面使用Liferay时遇到问题。问题在于完成struct action后的重定向。问题出现在内置portlet中,例如在页面上:“控制面板” - >“用户”和“我的帐户” - >“我的工作流程任务”以及可能的其他地方。显示用户列表并对用户执行某些操作(激活/取消激活)时,操作成功完成。但之后,不是返回用户列表页面,而是显示用户详细信息/编辑页面。在对工作流任务执行操作时也会发生类似的事情。

仅当我通过Apache代理连接到Liferay门户时才会发生这种情况。当我直接连接到liferay tomcat时,一切正常。在liferay tomcat access_logs中,这两种情况之间唯一有意义的区别是“重定向”URL参数(也有不同的refererPlid id,但它似乎并不相关)。 URL中的任何其他内容都是相同的。 并且重定向参数的唯一区别是URL的开头。在使用代理的情况下,它是在Apache虚拟主机和默认端口中配置的域名。如果没有Apache,它有服务器IP和tomcat端口。

Without apache: ...http%3A%2F%2F10.254.10.124%3A8080... or ...http%3A%2F%2Flocalhost%3A8080... 
With apache: ...http%3A%2F%2Fsome.domain.eu...

在这两种情况下,都成功执行了操作。 没有apache就有重定向,tomcat响应:“302 -” 随着Apache用户详细/编辑页面的显示,tomcat响应:“200 12762

我正在使用liferay-portal-6.2-ce-ga6

有人知道如何解决这个问题吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为你应该尝试更换

ProxyPass /liferay ajp://localhost:8009
ProxyPassReverse /liferay ajp://localhost:8009

RewriteEngine on
RewriteRule ^/(.*) ajp://localhost:8009/$1 [P]

答案 1 :(得分:0)

使用portal.properties中的Liferay安全设置解决了问题。

##
## Redirect
##

#
# Set this property to "ip" or "domain" for the redirect security method. If
# set to "domain", the portal will only redirect users to domains listed in
# the property "redirect.url.domain.allowed". If set to "ip", the portal
# will only redirect to domains whose IP address resolve to an IP address
# listed in the property "redirect.url.ip.allowed".
#
#redirect.url.security.mode=domain
redirect.url.security.mode=ip

#
# Input a list of comma delimited domains which the portal is allowed to
# redirect to. Input a blank list to allow any domain.
#
redirect.url.domains.allowed=

#
# Input a list of comma delimited IPs which the portal is allowed to
# redirect to. Input a blank list to allow any IP. SERVER_IP will be
# replaced with the IP of the host server.
#
redirect.url.ips.allowed=127.0.0.1,SERVER_IP