当前位置: 首页 > 知识库问答 >
问题:

使用Nginx反向代理执行Liferay

乜胜泫
2023-03-14

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

如果我直接访问Liferay的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部分中的扩展名是在docker comment中链接的docker容器的名称。和Liferay的选择:

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

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

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

但是当我使用一个不是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;
}

并在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配置中缺少了一些东西,但我不知道是什么。至少我在官方文件中找不到任何线索。

共有1个答案

孟智志
2023-03-14

问题似乎出在proxy_pass中的尾部斜杠上。这才是与众不同的地方。在本例中,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正在正常工作。

 类似资料:
  • Nginx的配置文件如下: server { listen 80; #此处应该配置你的域名: server_name doc.iminho.me; charset utf-8; #此处配置你的访问日志,请手动创建该目录: access_log /var/log/nginx/webhook.iminho.me/access.log

  • 主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过

  • Nginx 是一个高性能的 HTTP 和反向代理服务器,代码完全用 C 实现,基于它的高性能以及诸多优点,我们可以把它设置为 hyperf 的前置服务器,实现负载均衡或 HTTPS 前置服务器等。 配置 Http 代理 # 至少需要一个 Hyperf 节点,多个配置多行 upstream hyperf { # Hyperf HTTP Server 的 IP 及 端口 server

  • 本文向大家介绍nginx正向代理与反向代理详解,包括了nginx正向代理与反向代理详解的使用技巧和注意事项,需要的朋友参考一下 正向代理 就是假设有一个内网 内网有两台机器,这两台机器只有 a 可以上网 b 不能上网,但是 a 和 b 通过网络相连接 这时如果 b 想访问外网,就可以通过 a 来正向代理访问外网 正向代理就是在内网中模拟目标服务器,把内网中其它机器的请求 转发给外网中的真正的目标服

  • 我所代理的服务器不返回位置标头,这意味着我的不返回任何东西。 我想记录我的上游请求,这样我就可以在日志中看到我向上游服务器发出的请求。 我想知道是否有一种简单的方法可以在不创建lua脚本的情况下记录Nginx发出的出站请求,或者lua脚本是最好的方法,有人可以在我的搜索中提供方向吗?

  • 本小节,我们继续学习 Nginx 在 七层反向代理中的其它几种比较常见的情况,比如 web 服务中的 WebSocket 协议的反向代理和 uwsgi 协议的反向代理。 1. WebSocket的反向代理 WebSocket 是目前比较成熟的技术了, WebSocket 协议为创建客户端和服务器端需要实时双向通讯的 webapp 提供了一个选择。服务器可以向浏览器推送相关消息,这样在前端实现的某个