Nextcloud dentro e fora do OpenLiteSpeed: configurar proxy reverso

Como configurar o OpenLiteSpeed ​​para reverter o proxy no Nextcloud, localizado na rede interna?


Surpreendentemente, uma pesquisa no Habré pelo OpenLiteSpeed ​​não gera nada! Corro para corrigir essa injustiça, porque o LSWS é um servidor Web digno. Eu o amo pela velocidade e pela interface de administração da web da moda:


imagem


Apesar do OpenLiteSpeed ​​ser mais famoso como um "acelerador" do WordPress, no artigo de hoje mostrarei sua aplicação bastante específica. Nomeadamente, solicitações de proxy reverso (proxy reverso). Você diz que é mais comum usar o nginx para isso? Eu concordo Mas realmente nos machucou amar o LSWS!


Proxying ok, mas onde? Um serviço igualmente maravilhoso é o 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, solicitamos proxy 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 esquema é assim:


imagem


É claro que o esquema é simplificado, pois organizar uma infraestrutura de serviços da web não é o tópico do artigo de hoje.


Também neste artigo vou omitir a instalação e a configuração básica de não-clauda, ​​principalmente porque existem materiais sobre este tópico no Habré. Mas definitivamente mostrarei as configurações, sem as quais o Nextcloud não funcionará para o proxy.


Dado: O Nextcloud é instalado no host 1 e configurado para funcionar via http (sem SSL), ele 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, uma externa (aparência na Internet) e outra interna com um endereço IP na rede 172.16.22.0/24


O nome DNS cloud.connect.link leva ao endereço IP da interface externa do host 2


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


  • Instale o OpenLiteSpeed ​​no Ubuntu 18.04.2.

Adicione um repositório:


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

definir, executar:


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

  • Minimize o firewall.
    sudo ufw permitir ssh
    sudo ufw padrão permite saída
    padrão sudo ufw negar entrada
    sudo ufw permite http
    sudo ufw permitir https
    sudo ufw permite do seu host de gerenciamento para qualquer porta 7080
    sudo ufw enable
  • Configure o OpenLiteSpeed ​​como um proxy reverso.
    Crie diretórios para o host virtual.
    cd / usr / local / lsws /
    sudo mkdirc cloud.connect.link
    cd cloud.connect.link/
    sudo mkdir {conf, html, logs}
    sudo chown lsadm: lsadm ./conf/

Configure o host virtual a partir da interface da web LSWS.
Gerenciamento de URL aberto http://cloud.connect.link:7080
Login / senha padrão: admin / 123456


imagem


Adicione um host virtual (Hosts Virtuais> Adicionar).


Ao adicionar, uma mensagem de erro será exibida - não há arquivo de configuração. Isso é normal, resolvido clicando em Clique para criar.


imagem


Na guia Geral, especifique a Raiz do documento (embora não seja necessária, a configuração não decolará sem ela). O Nome de Domínio, se não especificado, será retirado do Nome do Host Virtual, que denominamos o nome do nosso domínio.


imagem


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


imagem


Indique o nome e o endereço. O nome pode ser especificado arbitrariamente, mas deve ser lembrado, útil nas próximas etapas. O endereço é onde o Nextcloud mora na rede interna:


imagem


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


imagem


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


imagem


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


imagem


imagem


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

Crie um "ouvinte" (Listeners> Add), chame-o de "https". Apontamos para a porta 443 e observamos que ela será segura:


imagem


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


imagem


Um "ouvinte" foi criado, agora na seção Mapeamentos de Host Virtual, adicionamos nosso host virtual a ele:


imagem


Se o LSWS fizer proxy de apenas um serviço, a configuração poderá ser concluída. Mas planejamos usá-lo para transferir solicitações para diferentes "autoridades", dependendo do nome do domínio. E todos os domínios terão seus próprios certificados. Portanto, você precisa acessar 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.


imagem


Resta configurar a reescrita da URL para que as solicitações http sejam endereçadas a https.


(A propósito, quando isso terminará? É hora dos navegadores e outros softwares acessarem https por padrão e fazerem o encaminhamento sem SSL manualmente, se necessário).
Habilite Habilitar Reescrever e escreva Regras de Reescrita:


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

imagem


É impossível aplicar as regras de reescrita com o reinício gracioso habitual devido a um estranho mal-entendido. Portanto, reiniciar o LSWS não é elegante, mas rude e eficiente:


sudo systemctl restart lsws.service

Para que o servidor escute a 80ª porta, crie outro Ouvinte. Vamos chamá-lo de http, especificar a 80ª porta e ela não será segura:


imagem


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


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


imagem


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


imagem


Para o Nextcloud nos deixar entrar, você precisa adicionar o domínio cloud.connect.link à lista de domínios confiáveis. Vá em edit config.php. Eu instalei o Nextcloud automaticamente ao instalar o Ubuntu e a configuração está aqui: / var / snap / nextcloud / current / nextcloud / config.


Na chave trust_domains, adicione o parâmetro 'cloud.connect.link':


'domínios_ confiáveis' =>
matriz (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

imagem


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 e visível para o servidor Nextcloud, ou seja, Interface local IP LSWS. Sem essa etapa, a interface da web Nextcloud funciona, mas os aplicativos não são autorizados.


'trust_proxies' =>
matriz (
0 => '172.16.22.100',
),

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


imagem


O problema está resolvido! Agora, cada cliente pode usar com segurança a "nuvem de arquivos" em seu URL pessoal, o servidor com os arquivos é separado da Internet, os futuros clientes obterão a mesma coisa e nenhum endereço IP adicional será afetado.
Além disso, você pode usar o proxy reverso para fornecer conteúdo estático, mas no caso do Nextcloud, isso não dará um aumento notável na velocidade. Portanto, isso é opcional e opcional.


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

Source: https://habr.com/ru/post/pt452750/


All Articles