Nextcloud 天然支持 http 协议,然而在手机、PC端的客户端必须需要 https 协议登录,本文记录为 Nextcloud 配置 https 登录的方法。
背景 {#背景}
已经架设好了Nextcloud 服务器,天然支持的是 http 协议访问,然而客户端登录时发现仅接受 https 协议访问:

- 
因此我们需要为nextcloud 配置 https 访问 我的需求还要复杂一点 
- 
由于我没有公网 ipv4 地址,但是有 ipv6 的地址;为了在有 ipv6 时直接享受家庭宽带的上传带宽,需要一个 https 域名直接DNS 我的 ipv6地址; 
- 
同时在无法获取 ipv6 地址的环境下配置腾讯云的云服务器作为内网穿透中转,还需要配置一个 DNS 到ipv4地址的 https 访问域名 
- 
总之,目标是: - 为本地 nextcloud 服务配置多个 https 访问,并成功实现客户端登录
 
实现思路 {#实现思路}
- 使用 Nginx 为 Nextcloud 服务配置反向代理
- 使用两组 ssl 访问映射到两个端口,代理同一个本地 http 访问协议
- 配置 nextcloud 仅支持 https 访问
操作流程 {#操作流程}
创建 Nginx {#创建-Nginx}
- 参考 之前的教程
- 注意在创建容器时,需要进行几个代理,就要映射几个端口(此处映射两个)
- 已经映射好端口的容器也可以进行修改
申请 SSL 证书 {#申请-SSL-证书}
- 
此处为了使用方便需要想办法申请 CA 证书 
- 
我的证书是在百度云申请的以我的域名为例 申请了 ipv4.zywvvd.com ipv6.zywvvd.com两组证书
- 
证书领用参考 百度智能云申请 
- 
下载时选择 PEM_Nginx,解压后需要使用的是 .crt 和 .key 文件
配置 Nginx {#配置-Nginx}
- 配置方法和 创建 Nginx docker 容器反向代理 https 文章中描述的相同
- 不同的是需要在 /etc/nginx/conf.d/文件夹下多创建一个配置文件,填上相应信息
- 但是两个配置文件代理的内容是相同的
配置 Nextcloud {#配置-Nextcloud}
- 此时已经可以通过代理访问 Nextcloud 了

- 此时需要修改 Nextcloud 支持的域名
- 随后网页端可以正常访问

客户端登录配置 {#客户端登录配置}
- 在Nextcloud 客户端登陆时需要填写服务器地址
- 进入设置->个人->手机与电脑可以看到客户端登录的链接地址

- 然而此时PC端和手机端的 Nextcloud 客户端无法使用

- 这是因为我们是以 https 协议访问的 Nginx 服务器,Nginx 将我们的会话内容代理到 Nextcloud 服务器中,而服务器配置默认 http 协议访问,代理的一般也是 80 端口,因此在返回的跳转链接中使用的是 http 协议的链接,但是客户端要求的却是 https 协议访问,因此产生错误
- 解决方案:在 /var/www/html/config目录下的 config.php,添加如下内容:
- 
修改完后立即生效,不需要任何操作,此时可以使用两个https 域名登录客户端(PC、手机均可)访问我们的服务器了 缺点就是之前 http 协议的访问链接不再生效了 


 51工具盒子
51工具盒子 
                 
                             
                         
                         
                        