Kubernetes部署Nextcloud通过/nextcloud路径访问跳转404问题求助
解决方案
问题根因
- Nextcloud服务默认运行在站点根路径,无法感知外部Ingress配置的
/nextcloud子路径前缀,返回的重定向地址默认不带/nextcloud前缀 - 现有配置仅完成了Ingress层的路径重写,未同步修改Nextcloud自身的路径配置
修复步骤
- 修改Nextcloud Deployment配置,新增环境变量指定服务根路径和信任代理,在
containers[0].env下新增以下配置:
- name: OVERWRITE_WEBROOT value: "/nextcloud" - name: TRUSTED_PROXIES value: "*" - name: APACHE_DISABLE_REWRITE_IP value: "1"
- 现有Ingress配置无需修改,确认保留以下配置即可:
annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/rewrite-target: /$1 paths: - path: /nextcloud(/.*) pathType: Prefix
若你已经完成Nextcloud初始化,需要手动修改Nextcloud配置文件同步参数:
- 进入Nextcloud容器:
kubectl exec -it <nextcloud-pod-name> -- /bin/bash - 编辑
/var/www/html/config/config.php,新增/修改以下参数:
'overwritewebroot' => '/nextcloud', 'htaccess.RewriteBase' => '/nextcloud',- 执行命令更新重写规则:
sudo -u www-data php occ maintenance:update:htaccess
- 进入Nextcloud容器:
重新应用修改后的Deployment配置,等待Pod重启完成后即可通过
http://localhost:32738/nextcloud正常访问服务,所有重定向路径都会自动携带/nextcloud前缀。
内容的提问来源于stack exchange,提问作者Paul Schuldesz
相关产品推荐
相关产品推荐

