Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

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

Sorprendentemente, unha busca en Habré de OpenLiteSpeed ​​​​non dá nada! Apúrome a corrixir esta inxustiza, porque LSWS é un servidor web decente. Encántame pola súa velocidade e a súa elegante interface de administración web:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Aínda que OpenLiteSpeed ​​​​é máis famoso como "acelerador" de WordPress, no artigo de hoxe mostrarei un uso bastante específico del. É dicir, proxy inverso de solicitudes (proxy inverso). Di que é máis común usar nginx para iso? estarei de acordo. Pero doe tanto que nos namoramos de LSWS!

O proxy está ben, pero onde? Nun servizo non menos marabilloso - Nextcloud. Usamos Nextcloud para crear "nubes para compartir ficheiros" privadas. Para cada cliente, asignamos unha máquina virtual separada con Nextcloud e non queremos expoñelas "fóra". Pola contra, enviamos as solicitudes mediante un proxy inverso común. Esta solución permite:
1) eliminar o servidor no que se almacenan os datos do cliente de Internet e
2) gardar enderezos ip.

O diagrama ten este aspecto:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Está claro que o esquema é simplificado, porque a organización da infraestrutura de servizos web non é o tema do artigo de hoxe.

Tamén neste artigo omitirei a instalación e configuración básica do nextcloud, sobre todo porque hai materiais sobre este tema en Habré. Pero definitivamente mostrarei a configuración, sen a cal Nextcloud non funcionará detrás dun proxy.

Dado:
Nextcloud está instalado no host 1 e está configurado para funcionar a través de http (sen SSL), só ten unha interface de rede local e un enderezo IP "gris" 172.16.22.110.
Configuramos OpenLiteSpeed ​​no host 2. Ten dúas interfaces, externa (mira a Internet) e interna cun enderezo IP na rede 172.16.22.0/24
O enderezo IP da interface externa do host 2 é o nome DNS cloud.connect.link

Unha tarefa:
Obtén desde Internet a través da ligazón 'https://cloud.connect.link' (SSL) a Nextcloud na rede interna.

  • Instalación de OpenLiteSpeed ​​en Ubuntu 18.04.2.

Engadimos un repositorio:

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

instalar, executar:

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

  • Configuración mínima do firewall.

    sudo ufw permitir ssh
    sudo ufw default allow outgoing
    sudo ufw default deny incoming
    sudo ufw permitir http
    sudo ufw permithttps
    sudo ufw permitir de o teu host de xestión a calquera porto 7080
    sudo ufw habilitar

  • Configura OpenLiteSpeed ​​como un proxy inverso.
    Imos crear directorios baixo o virtualhost.

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

Imos configurar o host virtual desde a interface web LSWS.
Abrir a xestión de URL http://cloud.connect.link:7080
Inicio de sesión/contrasinal predeterminado: admin/123456

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Engade un host virtual (Anfitrións virtuais > Engadir).
Ao engadir, aparecerá unha mensaxe de erro: falta o ficheiro de configuración. Isto é normal, solucionado facendo clic en Fai clic para crear.

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Na pestana Xeral, especifique a raíz do documento (aínda que non é necesaria, a configuración non se despegará sen ela). O nome de dominio, se non se especifica, tomarase do nome de host virtual, que chamamos o noso nome de dominio.

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Agora toca lembrar que non temos só un servidor web, senón un proxy inverso. As seguintes configuracións indicarán a LSWS que proxy e onde. Na configuración de virtualhost, abra a pestana Aplicación externa e engada unha nova aplicación do tipo de servidor web:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Especifique o nome e o enderezo. Podes especificar un nome arbitrario, pero cómpre lembralo, será útil nos próximos pasos. A dirección é a onde reside Nextcloud na rede interna:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Na mesma configuración do servidor virtual, abra a pestana Contexto e cree un novo contexto do tipo Proxy:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Especifique os parámetros: URI = /, servidor web = nextcloud_1 (nome do paso anterior)

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Reinicie LSWS. Isto faise cun clic desde a interface web, milagres! (un rato hereditario fala en min)

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso
Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Imos crear un "listener" (Oíntes > Engadir), chamémoslle "https". Apuntao ao porto 443 e teña en conta que será seguro:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Na pestana SSL, especifique o camiño á clave e ao certificado:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Creouse o "listener", agora na sección Virtual Host Mappings engadirémoslle o noso host virtual:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Se LSWS só proxy a un servizo, pódese completar a configuración. Pero pensamos usalo para enviar solicitudes a diferentes "instancias" dependendo do nome de dominio. E todos os dominios terán os seus propios certificados. Polo tanto, cómpre ir á configuración de virtualhost e volver especificar a súa clave e certificado na pestana SSL. No futuro, isto debería facerse para cada novo host virtual.

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Queda por configurar a reescritura de url para que as solicitudes http sexan dirixidas a https.
(Por certo, cando rematará isto? É hora de que os navegadores e outro software vaian a https de forma predeterminada, e reenvíen a non SSL manualmente se é necesario).
Activar Activar reescritura e escribir regras de reescritura:

RewriteCond %{SERVER_PORT} 80
Reescribir a regra ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Debido a un estraño malentendido, é imposible aplicar as regras de reescritura co habitual reinicio Graceful. Polo tanto, reiniciaremos LSWS non con gracia, senón con rudeza e eficiencia:

sudo systemctl reiniciar lsws.service

Para que o servidor escoite o porto 80, imos crear outro escoitador. Chamémoslle http, especifique o porto número 80 e que non será seguro:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Por analoxía coa configuración de escoita https, imos anexar o noso host virtual.

Agora LSWS escoitará no porto 80 e enviará solicitudes a 443 desde el, reescribindo o URL.
En conclusión, recomendo baixar o nivel de rexistro de LSWS, que está configurado como Depurar por defecto. Neste modo, os rexistros multiplícanse á velocidade do raio! Na maioría dos casos, o nivel de Aviso é suficiente. Vaia a Configuración do servidor > Rexistro:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Isto completa a configuración de OpenLiteSpeed ​​como un proxy inverso. Unha vez máis, reinicie LSWS, siga a ligazón https://cloud.connect.link e mira:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Para que Nextcloud nos deixe entrar, necesitamos engadir o dominio cloud.connect.link á lista de confianza. Imos editar config.php. Instalei Nextcloud automaticamente ao instalar Ubuntu e a configuración está aquí: /var/snap/nextcloud/current/nextcloud/config.
Engade o parámetro "cloud.connect.link" á chave trusted_domains:

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

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Ademais, na mesma configuración, debes especificar o enderezo IP do noso proxy. Chámolle a atención sobre o feito de que o enderezo debe especificarse o que é visible para o servidor Nextcloud, é dicir. A IP da interface LSWS local. Sen este paso, a interface web de Nextcloud funciona, pero as aplicacións non están autorizadas.

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

Xenial, despois podemos entrar na interface de autorización:

Nextcloud dentro e fóra de OpenLiteSpeed: configuración do proxy inverso

Problema resolto! Agora cada cliente pode usar con seguridade a "nube de ficheiros" no seu propio URL persoal, o servidor con ficheiros está separado de Internet, os futuros clientes recibirán todo o mesmo e non se verá afectado nin un só enderezo IP adicional.
Ademais, podes usar un proxy inverso para entregar contido estático, pero no caso de Nextcloud, isto non aumentará notablemente a velocidade. Polo tanto, é opcional e opcional.

Alégrome de compartir esta historia, espero que sexa útil para alguén. Se coñeces métodos máis elegantes e eficientes para resolver o problema, agradecerei os comentarios!

Fonte: www.habr.com

Engadir un comentario