执行Liferay behing Nginx反向代理

时间:2017-09-13 13:56:23

标签: nginx liferay liferay-7

我正在尝试测试最后一个版本的Liferay(Liferay 7.0-ga4)并将其安装在反向代理(nginx)之后。我正在使用docker和docker compose进行测试,我创建了一个虚拟域docker.domain.com

如果直接访问其URL并且未配置反向代理,Liferay工作正常。

此外,如果我使用根位置,我已成功在LifeL服务器后面安装Liferay:

location / {
   proxy_pass http://liferay:8080;
   proxy_set_header X-Forwarded-Server $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-Proto $scheme;
}

proxy_pass部分中的liferay是docker compose中链接的docker容器的名称。和Liferay的选择:

web.server.host=docker.domain.com
web.server.protocol=http
web.server.http.port=80

在Liferay中配置反向代理。如果我输入http://docker.domain.com/

,结果是正确的

Liferay welcome page

我可以登录,接受条款和条件,......一切似乎都很好。

但是当我使用非root用户(即/ lifeay)时,我一般会遇到链接,图像和CSS的问题。

在nginx中使用类似于:

的配置
location /liferay {
   proxy_pass http://liferay:8080;
   proxy_set_header X-Forwarded-Server $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-Proto $scheme;
}

按照建议的here添加到Liferay的配置中:

portal.proxy.path=/liferay

访问http://docker.domain.com/liferay时,所有网址都搞砸了,并且没有显示CSS。在这里,我附上了最终结果的屏幕截图:

Liferay style goes wrong

这条线很有意思

http://docker.domain.com/liferay/liferay

“liferay”在网址中出现两次。 liferay的tomcat日志中出现了一些错误:

12:48:29,019 WARN  [http-nio-8080-exec-3][code_jsp:172] {code="404", msg="/liferay/o/mentions-web/css/mentions.css", uri=/liferay/o/mentions-web/css/mentions.css}
12:48:29,021 WARN  [http-nio-8080-exec-8][code_jsp:172] {code="404", msg="/liferay/o/frontend-css-web/main.css", uri=/liferay/o/frontend-css-web/main.css}
 ....

显然找不到某些文件。我已经用docker github创建了一个简单的例子来测试它,如果有人感兴趣,只花几分钟。尽管如此,我很确定我的Liferay配置中缺少某些东西,但我无法弄清楚是什么。至少我无法在官方文档中找到任何线索。

1 个答案:

答案 0 :(得分:0)

似乎问题在于proxy_pass中的尾部斜杠。这是有所作为的。在this example之后,nginx配置文件将是:

   location /liferay {
     return 302 /liferay/;
   }

   location /liferay/ {
     proxy_pass http://liferay:8080/;
     proxy_set_header X-Forwarded-Server $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-Proto $scheme;
    }

现在看来Liferay CSS和URL正常工作。