使用 NGINX 反向代理重写 OwnCloud Docker 镜像上的路径,但效果不佳

使用 NGINX 反向代理重写 OwnCloud Docker 镜像上的路径,但效果不佳

因此,我尝试通过 nginx https 反向代理后面的 docker 镜像运行 OwnCloud 实例,并且需要通过反向代理重写路径,这样就不必转到https://我的服务器/要访问 OwnCloud,您可以使用https://我的服务器/cloud去得到它。

我当前的反向代理位置块如下所示:

location  /cloud {
  rewrite /cloud/(.*) /$1  break;
  proxy_pass         http://localhost:8080;
  proxy_redirect     off;
  proxy_set_header   Host $host;
}

但这只起到了一半的作用。当我导航到 htts://my-server/cloud 时,我收到 OwnCloud 生成的 404 错误,然后如果我点击“带我回到 OwnCloud”,它会将我重定向到https://我的服务器/index.php这会导致 nginx 级别 404,因为重定向应该转到https://我的服务器/cloud/index.php

我想我可能被骗了,需要修改 OwnCloud 配置,以便它返回带有 /cloud 附加的链接,但我不知道如何通过 docker 镜像做到这一点。非常感谢任何帮助。

答案1

我可能会做这样的事情:

location  /cloud/ {
  proxy_pass         http://localhost:8080/;
}

注意末尾的斜杠/在......的最后地点代理密码指令[1]。这类似于 rsync 的工作方式,即如果尾部斜杠存在,它将替换后面的所有内容。在您的例子中: http://proxy/cloud将向上游发出请求http://upstream:8080/,而 OwnCloud 正在使用的任何子目录(例如示例)将被请求为: http://proxy/cloud/example并被请求为http://upstream:8080/example

你不需要改写如果您在代理到上游之前捕获了 /cloud 目录。

并删除其他设置,因为它们不是您想要的,除非您正在使用标题,否则我认为重定向对您的情况下没有任何区别。

[1] 来源: https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

相关内容