NextCloud Nginx 反向代理
我的 Nextcloud 服务器位于没有公网 IP 的家庭宽带环境中,属于 NAT 后面的设备。
Nextcloud 服务器配置了 Tinc Client 端,P2P 对端联网即可 Ping 通。
现通过一台 Vultr 的云服务器设置 Nginx 反向代理 Nextcloud 服务器的 Tinc IP。
浏览器可以正常打开 Nextcloud,手机 iOS 客户端连接服务器提示 CSRF Check Failed
。
原因可能是反向代理导致了跨域
的问题,CSRF TOKEN
在域名变换后发生了变化,因此无法验证通过。解决此问题要从两个方面着手:
Nginx 配置文件
server {
listen 80;
server_name mydomian.com;
# 启用 HSTS
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
location / {
# 获取 SSL 证书时使用的 Webroot
#root /home/herald/www;
#index index.html;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass_header Set-Cookie;
proxy_pass_header X-CSRF-TOKEN;
proxy_pass http://10.10.10.5:10000;
}
}
由于 Nextcloud 网盘的访问要借助云服务器的 Nginx 反向代理,上传文件会出现 Error 413
即上传文件体积过大,需要修改 nginx.conf
配置文件,设置 client_max_body_size
:
http {
...
client_max_body_size 10g;
}
Nextcloud 配置文件
编辑 $HTML/config/config.php
配置文件,添加 forcessl
和 overwriteprotocol
两项
...
'overwrite.cli.url' => 'http://mynas.local:10000',
'forcessl' => true,
'overwriteprotocol' => 'https',