今天在优化 NextCloud 的 Nginx 配置的时候,突然出现了 NextCloud 无法登录的情况,返回 503 错误。心里一咯噔,我没操作过 NextCloud 相关的容器,甚至连 NextCloud 所在 Compose 的 Nginx 都没动,就只动了对外映射的 Nginx,为啥会突然出现 503?
一开始以为是动了 Nginx 的缘故,但是检查了一遍配置,无误;对就配置进行回退,问题依旧……遂明白不是 Nginx 的问题,并且 503 错误,应该是访问已经到 NextCloud 服务这层了。格式化后的 Nginx 日志也验证了我的这一想法:
{"@timestamp":"2021-05-26T03:36:53+00:00","@source":"172.17.X.X","hostname":"15cae69f7690","ip":"-","client":"180.142.X.X","request_method":"PROPFIND","scheme":"https","domain":"222.216.X.X","referer":"-","request":"/remote.php/dav/files/chenkx/","args":"-","size":277,"status": 503,"responsetime":0.090,"upstreamtime":"0.049","upstreamaddr":"10.147.X.X:6443","http_user_agent":"Mozilla/5.0 (Windows) mirall/3.0.2stable-Win64 (build 20200924) (Nextcloud)","https":"on"}
So,只能从 NextCloud 服务入手了,通过查看 NextCloud 的日志,感觉看不出什么问题:
192.168.160.7 - 26/May/2021:12:12:51 +0800 "GET /index.php" 200
192.168.160.7 - luhp 26/May/2021:12:12:52 +0800 "PROPFIND /remote.php" 503
192.168.160.7 - chenkx 26/May/2021:12:13:09 +0800 "GET /status.php" 200
192.168.160.7 - chenkx 26/May/2021:12:13:09 +0800 "PROPFIND /remote.php" 503
192.168.160.7 - chensf 26/May/2021:12:13:12 +0800 "GET /status.php" 200
192.168.160.7 - chensf 26/May/2021:12:13:12 +0800 "PROPFIND /remote.php" 503
192.168.160.7 - zhangx 26/May/2021:12:13:14 +0800 "GET /status.php" 200
192.168.160.7 - zhangx 26/May/2021:12:13:15 +0800 "PROPFIND /remote.php" 503
192.168.160.7 - wangjm 26/May/2021:12:13:15 +0800 "GET /status.php" 200
192.168.160.7 - wangjm 26/May/2021:12:13:15 +0800 "PROPFIND /remote.php" 503
从网上找答案是,基本都是说权限问题,要更改权限什么的巴拉巴拉,对我没啥用,因为权限根本没动过(为了不遗漏问题,还特意去验证了一遍)。
最终,在官方论坛查看类似问题时,发现了这么一段话:
虽然解决的不是同一问题,但似乎可以用同一种办法来进行检测,所以我迫不及待地进行了尝试,结果……
[huangzz@NextCloud ~]$ docker exec --user www-data nextcloud-app php /var/www/html/occ files:scan --all
In LDAP.php line 381:
Lost connection to LDAP server.
files:scan [--output [OUTPUT]] [-p|--path PATH] [--all] [--unscanned] [--shallow] [--home-only] [--] [<user_id>...]
居然是 LDAP 的问题,马上进去查了 LDAP 服务器,果然挂了,重启 LDAP 服务后问题解决。
看来 occ files:scan --all
这个命令还是很实用的,如果没有偶然看到这个,估计还得走不少弯路。以后出现问题,要多研究研究官方的命令才可以了,就跟上次碰到 NextCloud 跨版本升级的问题一样,最后也是靠官方命令进行内部升级才解决的。
That's all.