首先我遇到一个问题,点击登录一直停留在登录页,转了好久就是不进主页。英文 login slow 等等关键字搜到一些 help.nextcloud.com 域名下的帖子,但是没法解决问题。而且我这是很新的 nextcloud 系统,21.0.2,似乎没有看到有针对性的办法。但是后面发现了下面这个问题,我修复了下面这个问题。似乎是阴差阳错的把这个登录慢、登录页面一直转不跳转到登录后的首页的问题给修复了……

另外一个问题:设置 - 管理 - 概览中,看到一个警告信息

反向代理头部配置错误,或者您正在通过可信的代理访问 Nextcloud。如果您不是通过可信代理访问 Nextcloud,这是一个安全问题,它允许攻击者通过伪装 IP 地址访问 Nextcloud。更多信息请查看文档

参考 官方文档此部分内容

config/config.php 中添加如下可信代理服务器地址。我是添加了 trusted_proxiesoverwriteprotocol 两个字段信息。我是在本机的 nginx 上做的反代,所以 trusted_proxies 就是 127.0.0.1,网站通过 https 访问,结合php语法,所以改好后看起来应该是这样的:

<?php
$CONFIG = array (
  'trusted_proxies' =>
  array (
    0 => '127.0.0.1',
  ),
  'overwriteprotocol' => 'https',
  ...
);

以上用省略号代替了其他配置。

然后在 nginx 反代的配置中,添加如下内容到 server 块或者具体的 location 块。使 nginx 在客户端请求的 http 头部标出客户端的真实 ip,然后传给后端 nextcloud

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

关于 http XFF header,来自 Mozilla docs

中文版本:X-Forwarded-For (XFF) 标头是事实上的标准标头,用于识别通过 HTTP 代理或负载均衡器连接到 Web 服务器的客户端的原始 IP 地址。 当客户端和服务器之间的流量被拦截时,服务器访问日志仅包含代理或负载均衡器的 IP 地址。 要查看客户端的原始 IP 地址,使用 X-Forwarded-For 请求头。

English Version: The X-Forwarded-For (XFF) header is a de-facto standard header for identifying the originating IP address of a client connecting to a web server through an HTTP proxy or a load balancer. When traffic is intercepted between clients and servers, server access logs contain the IP address of the proxy or load balancer only. To see the original IP address of the client, the X-Forwarded-For request header is used.

改好宿主机的 config/config.php 文件,重启 nextcloud docker 容器 docker restart nextcloud_container_name

再去概览中查看,反向代理头部配置错误这个警告已经被抑制了。而且,在登录页点击登录也能很快进入主页了(阴差阳错的解决了?神奇,感觉不对劲呢)。当然了我还不是很清楚这个问题是不是因为本文中提到的改动解决的。?️

end.