Configurando um Proxy Reverso para Nextcloud e ONLYOFFICE Docs

Introdução

Ao instalar múltiplas soluções de servidor em máquinas ou contêineres diferentes, a configuração correta de um servidor de roteamento (proxy) pode ser um desafio de infraestrutura.

Neste caso de uso específico, temos três entidades rodando simultaneamente:

  • NGINX (Proxy Reverso): http://nginx
  • Nextcloud (Aplicação Base): http://nextcloud
  • ONLYOFFICE Docs (Motor de Edição): http://onlyoffice

Todas as instâncias foram isoladas usando o Docker e estão expondo e se comunicando através da porta 80 internamente.

Para estabelecer a arquitetura e a conexão correta para o usuário final, as seguintes ações devem ser executadas:

  • Personalização do NGINX para que qualquer requisição na rota raiz (http://nginx/) abra a plataforma do Nextcloud.
  • Personalização do NGINX para que requisições sob o subdiretório (http://nginx/editors/) apontem para o ONLYOFFICE Docs.

Acompanhe este artigo para saber como parametrizar os cabeçalhos de rede e configurar corretamente o NGINX, o Nextcloud e os editores do ONLYOFFICE para operarem em sintonia.


Passo 1. Configurando o roteamento proxy para o Nextcloud

Para fazer com que o Nextcloud responda corretamente por trás do NGINX, precisamos alterar os blocos de servidor (server blocks) e informar à aplicação que o endereço do proxy é seguro, adicionando-o à lista de domínios confiáveis (trusted domains).

As configurações de roteamento estão localizadas dentro do contêiner do NGINX, no arquivo /etc/nginx/conf.d/default.conf. Edite este arquivo para que o bloco de servidor principal fique da seguinte forma:

server { 
    listen 80; 
    location / { 
        proxy_pass_header   Server; 
        proxy_pass          http://nextcloud/; 
    } 
}
Dica de Sintaxe: Preste muita atenção à presença da barra final (/) ao final do caminho definido na diretiva proxy_pass. Ela é vital para reescrever as URLs corretamente.

Aplique as novas configurações e reinicie as rotas do NGINX com o comando:

service nginx reload

Agora, adicione o domínio do proxy à lista de permissões. Abra o arquivo de configuração do contêiner do Nextcloud em /var/www/html/config/config.php. Encontre a matriz trusted_domains e anexe o nome/IP do contêiner NGINX. Após as alterações, a matriz ficará estruturada de forma semelhante a esta:

'trusted_domains' => array (
  0 => 'nextcloud',
  1 => 'nginx',
),

Passo 2. Configurando o proxy para os editores de documentos

Retorne ao arquivo default.conf no servidor NGINX e crie um novo bloco location exclusivo para os editores do ONLYOFFICE:

location /editors/ {     
    proxy_pass http://onlyoffice/; 
}

Ajuste de Cabeçalhos (X-Forwarded-Host):

Apenas adicionar o bloco de rotas não será suficiente para o editor funcionar sem erros. Por padrão de fábrica, o editor de documentos compila os caminhos virtuais gerando links baseados no endereço recebido na requisição inicial.

Como o editor não está diretamente exposto à web (o proxy faz o meio de campo), ele poderá tentar gerar links relativos quebrados (como http://nginx/apps/files/), assumindo que os recursos do ONLYOFFICE estão dentro da pasta do Nextcloud. Para corrigir e sobrescrever este comportamento de roteamento falho, precisamos injetar manualmente no cabeçalho HTTP o caminho exato onde o editor vive utilizando a diretiva X-Forwarded-Host.

Para alinhar todas as conexões (incluindo Websockets), edite o seu arquivo de configuração do NGINX adicionando as diretivas de upgrade no escopo superior. O arquivo final deve se parecer rigorosamente com isto:

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/;
    }
}

Salve o arquivo e aplique um service nginx reload novamente para ativar a arquitetura final.


Passo 3. Instalando e acoplando o conector ONLYOFFICE-Nextcloud

Com as rotas prontas, utilize o conector de integração (app) para criar a ponte real entre as duas instâncias no nível de software.

O pacote do conector está disponível em código aberto no GitHub, no entanto, a maneira mais fácil e segura de ativá-lo é baixá-lo diretamente como administrador a partir da loja de aplicativos do próprio Nextcloud.

Após a ativação do plugin, navegue até a nova aba do ONLYOFFICE no painel de Configurações (Settings) do Nextcloud. Lá, procure pelo campo de endereço do servidor do editor de documentos e insira a rota parametrizada pelo nosso proxy:

http://nginx/editors/

Salve as configurações. Agora a sua plataforma Nextcloud direcionará todo o tráfego de visualização e edição de arquivos Office para a sub-rota protegida do ONLYOFFICE Docs através do servidor NGINX.

Artigo com o tag:
Veja todas as etiquetas