要在 1Panel 中通过特定端口 https://a.com:20888 访问 Nextcloud,除了常规的反向代理设置,关键在于处理 非标准端口 的跳转识别。

1. 部署 Nextcloud 容器

  1. 在 应用商店 安装 Nextcloud。
  2. 外部访问端口:设置一个内部端口(例如 8080),此端口仅供 1Panel 内部反代使用,无需在防火墙放行。

2. 创建反向代理网站

  1. 新建网站:选择“反向代理”,域名填写 a.com

  2. 设置 HTTPS:在网站设置中申请/配置 SSL 证书。

  3. 修改主站端口:

    • 在网站的“设置” -> “基本信息”中,将监听端口改为 20888
    • 确保在 1Panel 的 防火墙 菜单中放行 20888 端口。
  4. 代理配置:代理地址指向 http://127.0.0.1:8080

3. 修改 Nextcloud 核心配置 (解决重定向问题)

由于使用了非标准端口 20888,必须手动修改 config.php,否则 Nextcloud 会自动跳转回不带端口的默认地址。

  1. 进入 文件,打开:/opt/1panel/apps/nextcloud/nextcloud/data/config/config.php

  2. 修改/添加以下关键配置:

    'trusted_domains' => 
    array (
      0 => '127.0.0.1:8080',
      1 => 'a.com:20888', // 必须包含端口号
    ),
    'overwrite.cli.url' => 'https://a.com:20888',
    'overwritehost' => 'a.com:20888',
    'overwriteprotocol' => 'https',
    'trusted_proxies' => array('127.0.0.1'),
    
  3. 保存并 重启 Nextcloud 容器。

4. 解决 Nginx 代理头信息(可选但推荐)

在 1Panel 网站设置的“反向代理”配置文件中,确保包含以下头信息,以防登录后跳转回 HTTP:

proxy_set_header Host $host:20888;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

您是否已经完成 SSL 证书 的申请,或者需要使用 自签名证书 来测试?