URL (https://xyz.abc.com/cc)当负载均衡器看到/cc时,它会将请求转发给WebSeal (Revers )。
WebSeal添加/设置(头主机: xyz.abc.com)并将请求转发到Apache2 (web服务器)。在网络密封中,我们有标准连接(/cc)来处理来自LB的请求。
当请求到达Apache2时,它会释放主机头值(xyz.abc.com),并将其重置为Apache2服务器名(xyzapacheweb1)。
现在,最后请求从apache2传递到Liferay (6.2),它显示URL (xyzapacheweb1)而不是(xyz.abc.com)
Liferay在web服务器前端时需要主机名,所以我们必须硬编码URL (在属性文件或apache2中)。
我们希望删除硬代码值并传递动态主机名,这样我们就可以为单个应用程序使用多个URL。
注意:当图片中没有WebSeal时,它会保留主机名。即Apache2显示实际域名(xyz.abc.com)
你能帮我解决这个问题吗?
如果你需要更多的信息,请告诉我。
发布于 2015-10-07 17:12:07
我想出了两个解决方案。
如果将域-主机名设置为
- Set custom header attribute in request from WebSeal i.e. domain-host-name. From LB -> WebSeal set the host value to this variable.
- Apache web server is able to retrieve this value because it's not default request header. Based on the domain-host-name value Set Header HOST value from Apache webserver for Liferay.
- remove web.server.host.name property in Liferay it will automatically get the HOST value (which was set by Apache).xyz.abc.com,则为xyz.abc.com
SetEnvIf域-主机xyz.abc.com HAVE_MyRequestHeader RequestHeader set xyz.abc.com env=HAVE_MyRequestHeader
如果域主机名设置为abc.xyz.com,则设置abc.xyz.com。
SetEnvIf域-主机abc.xyz.com HAVE_MyRequestHeader_1 RequestHeader set abc.xyz.com env=HAVE_MyRequestHeader_1
这是一个临时解决方案,因为这里我们必须在Apache中硬编码主机名签入。因此,如果有新的URL,那么您必须在Apache中配置它。
- WebSeal has Virtual Junction concept. Where webseal can be configure to play virtual hosting role.
请参阅:admin642.htm%23vhost-scenario1?lang=en
让我知道,如果你正面临类似的类型问题,我可以帮助解决。
发布于 2015-08-27 06:14:07
如果您正在使用mod_proxy从apache转发到tomcat,则将丢失该选项。
ProxyPreserveHost打开
这是因为通过http转发。如果您使用的是ajp,协议会自动为您处理。
不过,我不确定是否有类似的网页封印选项,也许apache可以帮助您找到它。
https://stackoverflow.com/questions/32236897
复制相似问题