在 Nginx 反向代理下执行 Liferay
Executing Liferay behing a Nginx reverse proxy
我正在尝试测试最新版本的 Liferay (Liferay 7.0-ga4) 并将其安装在反向代理 (nginx) 后面。我正在使用 docker 和 docker compose 进行测试,我创建了一个虚拟域 docker.domain.com
.
如果我直接访问它 url 并且没有配置反向代理,Liferay 工作正常。
此外,如果我使用根位置,我可以在 nginx 服务器后面成功安装 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 组合中链接的 docker 容器的名称。 Liferay 的选项:
web.server.host=docker.domain.com
web.server.protocol=http
web.server.http.port=80
在Liferay中配置反向代理。如果我输入 http://docker.domain.com/
:
结果是正确的
我可以登录,接受条款和条件,...一切似乎都很好。
但是当我使用非根位置(即 /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
时,所有 url 都乱七八糟, CSS 未显示。这里我附上最终结果的截图:
这条线很有意思
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 配置中缺少某些东西,但我无法弄清楚是什么。至少我无法在官方文档中找到任何线索。
似乎问题出在 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 可以正常工作。
我正在尝试测试最新版本的 Liferay (Liferay 7.0-ga4) 并将其安装在反向代理 (nginx) 后面。我正在使用 docker 和 docker compose 进行测试,我创建了一个虚拟域 docker.domain.com
.
如果我直接访问它 url 并且没有配置反向代理,Liferay 工作正常。
此外,如果我使用根位置,我可以在 nginx 服务器后面成功安装 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 组合中链接的 docker 容器的名称。 Liferay 的选项:
web.server.host=docker.domain.com
web.server.protocol=http
web.server.http.port=80
在Liferay中配置反向代理。如果我输入 http://docker.domain.com/
:
我可以登录,接受条款和条件,...一切似乎都很好。
但是当我使用非根位置(即 /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
时,所有 url 都乱七八糟, CSS 未显示。这里我附上最终结果的截图:
这条线很有意思
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 配置中缺少某些东西,但我无法弄清楚是什么。至少我无法在官方文档中找到任何线索。
似乎问题出在 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 可以正常工作。