为 Nextcloud 和 ONLYOFFICE 编辑器配置反向代理
介绍
在不同的机器上安装多个服务器解决方案时,可能会出现配置代理服务器的问题。
在这种情况下,有三台不同的机器:
- nginx – http://nginx,
- Nextcloud – http://nextcloud,
- ONLYOFFICE 编辑器 – http://onlyoffice.
所有内容都是使用 Docker 和 80 端口安装的。
为了建立正确的连接,应执行以下操作:
- 自定义 Nginx,使得在 http://nginx 上的请求可以打开 Nextcloud,
- 自定义 Nextcloud 以与文档编辑器一起工作,编辑器可通过 http://nginx/editors/ 访问。
阅读本文以了解如何正确配置 nginx、Nextcloud 和 ONLYOFFICE 文档的代理服务器。
步骤 1. 为 Nextcloud 设置代理
要通过 nginx 代理 Nextcloud,请更改 nginx 设置并将其地址添加到 Nextcloud 的信任域列表中。
所需的设置位于 nginx 容器中的 /etc/nginx/conf.d/default.conf。将此文件设置为如下所示:
server {
listen 80;
location / {
proxy_pass_header Server;
proxy_pass http://nextcloud/;
}
}注意 proxy_pass 路径末尾的斜杠。
使用以下命令刷新 nginx 设置:
service nginx reload现在添加 http://nginx 域名。在 Nextcloud 容器中打开配置文件 /var/www/html/config/config.php。找到或添加 trusted_domain 部分,并添加 nginx 地址。所有更改生效后,配置部分将如下所示:
‘trusted_domain’ => (0 => ‘nextcloud’, 1 => ‘nginx’)步骤 2. 为文档编辑器设置代理
再次打开 nginx 服务器上的 default.conf 并添加另一个位置
location /editors/ {
proxy_pass http://onlyoffice/;
}但这还不足以让编辑器运行。默认情况下,文档编辑器使用请求中提供的地址生成资源链接。由于编辑器未连接到代理服务器,它将生成与虚拟路径无关的链接(例如 http://nginx/apps/files/)。这是不正确的,因为 /apps/files/ 位于 http://onlyoffice/ 服务器上。
为了解决这个问题,需要在请求头中用 'X-Forwarded-Host' 头指明生成链接的路径。
在配置文件的开头添加以下代码:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $http_host/editors;
server {
listen 80;
location / {
proxy_pass_header Server;
proxy_pass http://nextcloud/;
}
location /editors/ {
proxy_pass http://onlyoffice/;
}
}步骤 3. 安装 ONLYOFFICE-Nextcloud 连接器
使用我们现成的连接器将 ONLYOFFICE 和 Nextcloud 实例连接在一起。连接器可以在 GitHub 上找到,但最简单的方法是从 Nextcloud 应用商店 安装。
安装后,您将在 设置 菜单中看到一个新选项。在那里,您需要指定 ONLYOFFICE 编辑器的地址 – http://nginx/editors/。