nginx转发nextcloud请求 导致nextcloud客户端无法正常访问

前言

nextcloud是一款较为流行的私有云解决方案,近期在搭建nextcloud的时候发现 网页可以正常访问,但是客户端无法访问。 经过研究,发现了问题的所在并找到了解决方法

开始

为了提高安全性,nextcloud的配置中有一项内容"信任域名"(trusted_domains). 在config/config.php中可以看到。只有通过信任域名配置中的域名访问nextcloud,请求才会被正常的解析并返回。
而nextcloud是怎么判断用户的请求域名呢?答案是根据http请求的host参数

很多人在配置nginx转发请求的时候,直接使用了 proxy_pass 进行转发,这样会导致原请求中的一些信息的丢失。从而导致nextcloud无法判断用户是根据哪个请求进行访问的,因此才会出现无法访问的情况
解决的方法也很简单,在nginx转发之前加一行

proxy_set_header Host $http_host;

该命令会将用户访问nginx请求中的Host变量同时转发给nextcloud,这样nextcloud就可以知道该请求是否合规。

评论