nginx 配置重写不起作用

nginx 配置重写不起作用

具有以下 nginx 配置:

server {
  server_name home.example.com;

  listen 80;

  location /rocket/ {
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_http_version 1.1;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
      proxy_pass http://IP:3010/;
      proxy_redirect off;
  }
}

我正在端口 3010 上内部运行网络聊天,网址为home.example.com/rocket

第一个 GET 请求是可以的,因为它被很好地重定向,但是当 HTML 页面请求 CSS 和 JS 脚本时,它使用根服务器名称:

home.example.com/asdfsafdsf.css

没有/rocket路径。

是否有重写规则或类似的东西返回第一个 HTML 告诉所有后续请求都必须添加路径/rocket

答案1

不要在 Nginx 中配置此项,请在应用程序服务器中配置此项。

RocketChat 的反向代理文档对此有注释:

注意:您必须使用外部 https 地址作为上面 [[第 3 节 Deploy-Rocket.Chat-without-docker#3-download-rocketchat]] 中 ROOT_URL 的值。这包括 https:// 并且省略端口号。因此,不要使用根目录网址=http://本地主机:3000使用类似https://你的主机名.com

因此,编辑你的 RocketChat 配置并设置

ROOT_URL=http://home.example.com/rocket/

此后,无需再为此修改 Nginx 配置。

相关内容