2017-09-13 110 views
0

我想测试Liferay(Liferay 7.0-ga4)的最后一个版本并将其安装在反向代理(nginx)后面。我使用码头和码头组成测试目的,并创建一个虚拟域docker.domain.com执行Liferay behing Nginx反向代理

如果我直接访问它的URL并且没有配置反向代理,Liferay会正常工作。

另外,我有成功安装的Liferay Nginx的服务器之后,如果我用根位置:

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; 
} 

liferay在proxy_pass部分是在泊坞窗撰写链接泊坞窗容器的名称。和Liferay的选项:

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

在Liferay中配置反向代理。结果是正确的,如果我输入http://docker.domain.com/

Liferay welcome page

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

但是,当我使用不是根的位置(即/ lifeay)时,我一般都会遇到链接,图像和css的问题。

随着nginx的类似configuraion:

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”出现两次在URL中。有些错误出现在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配置中缺少某些内容,但我无法弄清楚。至少我无法在官方文档中找到任何线索。

回答

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是否正常工作。