Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Como configuro o OpenLiteSpeed ​​para inverter o proxy para o Nextcloud na rede interna?

Surpreendentemente, uma pesquisa no Habré por OpenLiteSpeed ​​​​não dá nada! Apresso-me a corrigir esta injustiça, porque LSWS é um servidor web decente. Eu adoro isso por sua velocidade e interface sofisticada de administração da web:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Apesar do OpenLiteSpeed ​​ser mais famoso como um “acelerador” do WordPress, no artigo de hoje vou mostrar um uso bastante específico dele. Ou seja, proxy reverso de solicitações (proxy reverso). Você diz que é mais comum usar nginx para isso? Eu vou concordar. Mas dói tanto que nos apaixonamos pelo LSWS!

Proxy é ok, mas onde? Em serviço não menos maravilhoso - Nextcloud. Usamos o Nextcloud para criar "nuvens de compartilhamento de arquivos" privadas. Para cada cliente, alocamos uma VM separada com o Nextcloud e não queremos expô-los “fora”. Em vez disso, fazemos proxy de solicitações por meio de um proxy reverso comum. Esta solução permite:
1) remova o servidor no qual os dados do cliente são armazenados da Internet e
2) salvar endereços IP.

O diagrama é assim:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

É claro que o esquema é simplificado, porque organização da infra-estrutura de serviços web não é o tema do artigo de hoje.

Também neste artigo irei omitir a instalação e configuração básica do nextcloud, principalmente porque existem materiais sobre este tema no Habré. Mas definitivamente mostrarei as configurações, sem as quais o Nextcloud não funcionará por trás de um proxy.

Dado:
O Nextcloud é instalado no host 1 e configurado para funcionar em http (sem SSL), possui apenas uma interface de rede local e um endereço IP "cinza" 172.16.22.110.
Vamos configurar o OpenLiteSpeed ​​no host 2. Ele possui duas interfaces, externa (olha para a Internet) e interna com endereço IP na rede 172.16.22.0/24
O endereço IP da interface externa do host 2 é o nome DNS cloud.connect.link

Tarefa:
Obtenha da Internet através do link 'https://cloud.connect.link' (SSL) para Nextcloud na rede interna.

  • Instalando o OpenLiteSpeed ​​​​no Ubuntu 18.04.2.

Vamos adicionar um repositório:

wget -O http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |sudo bash
sudo apt-get update

instale, execute:

sudo apt-get instalar openlitespeed
sudo /usr/local/lsws/bin/lswsctrl start

  • Configuração mínima de firewall.

    sudo ufw permitir ssh
    sudo ufw default permitir saída
    sudo ufw default negar entrada
    sudo ufw permitir http
    sudo ufw permitir https
    sudo ufw permitir de seu host de gerenciamento para qualquer porta 7080
    sudo ufw enable

  • Configure o OpenLiteSpeed ​​​​como um proxy reverso.
    Vamos criar diretórios no virtualhost.

    cd /usr/local/lsws/
    sudo mkdirc nuvem.connect.link
    cd nuvem.connect.link/
    sudo mkdir {conf,html,logs}
    sudo chown lsadm:lsadm ./conf/

Vamos configurar o host virtual na interface da web LSWS.
Gerenciamento de url aberto http://cloud.connect.link:7080
Login/senha padrão: admin/123456

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Adicione um host virtual (Hosts virtuais > Adicionar).
Ao adicionar, uma mensagem de erro aparecerá - o arquivo de configuração está ausente. Isso é normal, resolvido clicando em Clique para criar.

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Na guia General, especifique o Document Root (embora não seja necessário, a configuração não decolará sem ele). O nome de domínio, se não for especificado, será obtido do nome do host virtual, que denominamos nosso nome de domínio.

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Agora é hora de lembrar que não temos apenas um servidor web, mas um proxy reverso. As configurações a seguir dirão ao LSWS o que proxy e onde. Nas configurações do host virtual, abra a guia Aplicativo Externo e adicione um novo aplicativo do tipo servidor Web:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Especifique o nome e o endereço. Você pode especificar um nome arbitrário, mas precisa se lembrar dele, pois será útil nas próximas etapas. O endereço é aquele onde o Nextcloud reside na rede interna:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Nas mesmas configurações do host virtual, abra a guia Context e crie um novo contexto do tipo Proxy:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Especifique os parâmetros: URI = /, Web server = nextcloud_1 (nome da etapa anterior)

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Reinicie o LSWS. Isso é feito com um clique na interface da web, milagres! (um portador de rato hereditário fala em mim)

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso
Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

  • Colocamos o certificado, configuramos https.
    O procedimento para obter um certificado nós o omitiremos, concordaremos que já o temos e ficaremos com a chave no diretório /etc/letsencrypt/live/cloud.connect.link.

Vamos criar um "ouvinte" (Ouvintes > Adicionar), vamos chamá-lo de "https". Aponte para a porta 443 e observe que ela será segura:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Na guia SSL, especifique o caminho para a chave e o certificado:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

O “listener” foi criado, agora na seção Virtual Host Mappings vamos adicionar nosso virtual host a ele:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Se o LSWS fizer proxy apenas para um serviço, a configuração poderá ser concluída. Mas planejamos usá-lo para enviar solicitações para diferentes "instâncias" dependendo do nome do domínio. E todos os domínios terão seus próprios certificados. Portanto, você precisa ir para a configuração do host virtual e especificar novamente sua chave e certificado na guia SSL. No futuro, isso deve ser feito para cada novo host virtual.

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Resta configurar a reescrita de url para que as solicitações http sejam endereçadas a https.
(A propósito, quando isso vai acabar? É hora de os navegadores e outros softwares irem para https por padrão e encaminharem para não-SSL manualmente, se necessário).
Ative Habilitar regravação e escreva Regras de regravação:

Reescrever Cond %{SERVER_PORT} 80
RewriteRule ^ (. *) $ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Devido a um estranho mal-entendido, é impossível aplicar as regras de reescrita com a reinicialização graciosa usual. Portanto, reiniciaremos o LSWS não graciosamente, mas de maneira rude e eficiente:

sudo systemctl reiniciar lsws.service

Para fazer o servidor escutar a porta 80, vamos criar outro Listener. Vamos chamá-lo de http, especificar a 80ª porta e que não será seguro:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Por analogia com a configuração do ouvinte https, vamos anexar nosso host virtual a ele.

Agora o LSWS escutará na porta 80 e enviará solicitações para 443 a partir dela, reescrevendo o URL.
Em conclusão, recomendo diminuir o nível de log LSWS, que é definido como Depurar por padrão. Neste modo, as toras se multiplicam na velocidade da luz! Na maioria dos casos, o nível Warning é suficiente. Vá para Configuração do servidor > Log:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Isso conclui a configuração do OpenLiteSpeed ​​​​como um proxy reverso. Mais uma vez, reinicie o LSWS, siga o link https://cloud.connect.link e veja:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Para que o Nextcloud nos deixe entrar, precisamos adicionar o domínio cloud.connect.link à lista confiável. Vamos editar config.php. Instalei o Nextcloud automaticamente ao instalar o Ubuntu e a configuração está localizada aqui: /var/snap/nextcloud/current/nextcloud/config.
Adicione o parâmetro 'cloud.connect.link' à chave Trusted_domains:

'trusted_domains' =>
variedade (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Além disso, na mesma configuração, você deve especificar o endereço IP do nosso proxy. Chamo a atenção para o fato de que o endereço deve ser especificado aquele que é visível para o servidor Nextcloud, ou seja, O IP da interface LSWS local. Sem esta etapa, a interface web do Nextcloud funciona, mas os aplicativos não são autorizados.

'trusted_proxies' =>
variedade (
0 => '172.16.22.100',
),

Ótimo, depois disso podemos entrar na interface de autorização:

Nextcloud dentro e fora do OpenLiteSpeed: configurando o proxy reverso

Problema resolvido! Agora cada cliente pode usar com segurança a “nuvem de arquivos” em seu próprio URL pessoal, o servidor com arquivos é separado da Internet, os futuros clientes receberão tudo igual e nenhum endereço IP adicional será afetado.
Além disso, você pode usar um proxy reverso para entregar conteúdo estático, mas no caso do Nextcloud, isso não dará um aumento perceptível na velocidade. Portanto, é opcional e opcional.

Fico feliz em compartilhar esta história, espero que seja útil para alguém. Se você conhece métodos mais elegantes e eficientes para resolver o problema, ficarei grato pelos comentários!

Fonte: habr.com

Adicionar um comentário