Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

¿Cómo configuro OpenLiteSpeed ​​​​para revertir el proxy a Nextcloud en la red interna?

¡Sorprendentemente, una búsqueda en Habré para OpenLiteSpeed ​​​​no da nada! Me apresuro a corregir esta injusticia, porque LSWS es un servidor web decente. Me encanta por su velocidad y su elegante interfaz de administración web:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Aunque OpenLiteSpeed ​​​​es más famoso como un "acelerador" de WordPress, en el artículo de hoy mostraré un uso bastante específico. A saber, proxy inverso de solicitudes (proxy inverso). ¿Dices que es más común usar nginx para esto? estaré de acuerdo ¡Pero duele tanto que nos enamoramos de LSWS!

Proxying está bien, pero ¿dónde? En un servicio no menos maravilloso: Nextcloud. Usamos Nextcloud para crear "nubes de intercambio de archivos" privadas. Para cada cliente, asignamos una máquina virtual separada con Nextcloud y no queremos exponerlos "afuera". En su lugar, procesamos las solicitudes a través de un proxy inverso común. Esta solución permite:
1) eliminar el servidor en el que se almacenan los datos del cliente de Internet y
2) guardar direcciones IP.

El esquema se ve así:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Es claro que el esquema se simplifica, porque la organización de la infraestructura de servicios web no es el tema del artículo de hoy.

También en este artículo, omitiré la instalación y la configuración básica de nextcloud, especialmente porque hay materiales sobre este tema en Habré. Pero definitivamente mostraré la configuración, sin la cual Nextcloud no funcionará detrás de un proxy.

mayo:
Nextcloud está instalado en el host 1 y configurado para funcionar a través de http (sin SSL), solo tiene una interfaz de red local y una dirección IP "gris" 172.16.22.110.
Configuremos OpenLiteSpeed ​​​​en el host 2. Tiene dos interfaces, externa (mira a Internet) e interna con una dirección IP en la red 172.16.22.0/24
La dirección IP de la interfaz externa del Host 2 es el nombre DNS cloud.connect.link

Problema:
Obtenga de Internet a través del enlace 'https://cloud.connect.link' (SSL) a Nextcloud en la red interna.

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

Agreguemos un repositorio:

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

instalar, ejecutar:

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

  • Configuración mínima del cortafuegos.

    sudo ufw permitir ssh
    sudo ufw predeterminado permitir saliente
    sudo ufw predeterminado denegar entrante
    sudo ufw permitir http
    sudo ufw permitir https
    sudo ufw permitir desde su anfitrión de gestión a cualquier puerto 7080
    sudo ufw enable

  • Configure OpenLiteSpeed ​​​​como un proxy inverso.
    Vamos a crear directorios bajo virtualhost.

    CD /usr/local/lsws/
    sudo mkdirc nube.conectar.enlace
    cd nube.connect.link/
    sudo mkdir {conf, html, registros}
    sudo chown lsadm:lsadm ./conf/

Configuremos el host virtual desde la interfaz web de LSWS.
Gestión de URL abiertas http://cloud.connect.link:7080
Nombre de usuario/contraseña predeterminados: admin/123456

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Agregue un host virtual (Host virtual > Agregar).
Al agregar, aparecerá un mensaje de error: falta el archivo de configuración. Esto es normal, se soluciona haciendo clic en Hacer clic para crear.

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

En la pestaña General, especifique la raíz del documento (aunque no es necesaria, la configuración no funcionará sin ella). El nombre de dominio, si no se especifica, se tomará del nombre de host virtual, al que llamamos nuestro nombre de dominio.

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Ahora es el momento de recordar que no solo tenemos un servidor web, sino un proxy inverso. Las siguientes configuraciones le dirán a LSWS qué proxy y dónde. En la configuración de virtualhost, abra la pestaña Aplicación externa y agregue una nueva aplicación del tipo de servidor web:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Especifique el nombre y la dirección. Puede especificar un nombre arbitrario, pero debe recordarlo, será útil en los próximos pasos. La dirección es aquella donde vive Nextcloud en la red interna:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

En la misma configuración de host virtual, abra la pestaña Contexto y cree un nuevo contexto del tipo Proxy:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Especifique los parámetros: URI = /, Servidor web = nextcloud_1 (nombre del paso anterior)

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Reinicie LSWS. Esto se hace con un clic desde la interfaz web, ¡milagros! (habla en mí un portador de ratón hereditario)

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso
Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

  • Ponemos el certificado, configuramos https.
    El procedimiento para obtener un certificado. lo omitiremos, aceptaremos que ya lo tenemos y nos acostaremos con la clave en el directorio /etc/letsencrypt/live/cloud.connect.link.

Vamos a crear un "oyente" (Oyentes > Agregar), llamémoslo "https". Apúntelo al puerto 443 y tenga en cuenta que será Seguro:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

En la pestaña SSL, especifique la ruta a la clave y el certificado:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Se ha creado el "escucha", ahora en la sección Asignaciones de host virtual le agregaremos nuestro host virtual:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Si LSWS solo usará un proxy para un servicio, la configuración se puede completar. Pero planeamos usarlo para enviar solicitudes a diferentes "instancias" según el nombre de dominio. Y todos los dominios tendrán sus propios certificados. Por lo tanto, debe ir a la configuración de virtualhost y nuevamente especificar su clave y certificado en la pestaña SSL. En el futuro, esto debería hacerse para cada nuevo host virtual.

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Queda por configurar la reescritura de url para que las solicitudes http se dirijan a https.
(Por cierto, ¿cuándo terminará esto? Es hora de que los navegadores y otro software vayan a https de forma predeterminada y reenvíen manualmente a no-SSL si es necesario).
Active Habilitar reescritura y escriba reglas de reescritura:

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

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Debido a un extraño malentendido, es imposible aplicar las reglas de reescritura con el reinicio elegante habitual. Por lo tanto, reiniciaremos LSWS no con gracia, sino con rudeza y eficiencia:

sudo systemctl reiniciar lsws.servicio

Para hacer que el servidor escuche el puerto 80, creemos otro Listener. Llamémoslo http, especifique el puerto 80 y que no será seguro:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Por analogía con la configuración del oyente https, adjuntemos nuestro servidor virtual.

Ahora LSWS escuchará en el puerto 80 y enviará solicitudes al 443 desde él, reescribiendo la URL.
En conclusión, recomiendo reducir el nivel de registro de LSWS, que está configurado en Depurar de forma predeterminada. ¡En este modo, los registros se multiplican a la velocidad del rayo! Para la mayoría de los casos, el nivel de Advertencia es suficiente. Vaya a Configuración del servidor > Registro:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Esto completa la configuración de OpenLiteSpeed ​​como proxy inverso. Una vez más, reinicie LSWS, siga el enlace https://cloud.connect.link y ver:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Para que Nextcloud nos permita ingresar, debemos agregar el dominio cloud.connect.link a la lista de confianza. Vamos a editar config.php. Instalé Nextcloud automáticamente al instalar Ubuntu y la configuración se encuentra aquí: /var/snap/nextcloud/current/nextcloud/config.
Agregue el parámetro 'cloud.connect.link' a la clave trust_domains:

'dominios_de_confianza' =>
matriz
0 => '172.16.22.110',
1 => 'nube.conectar.enlace',
),

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

Además, en la misma configuración, debe especificar la dirección IP de nuestro proxy. Llamo su atención sobre el hecho de que la dirección debe especificarse la que es visible para el servidor Nextcloud, es decir La IP de la interfaz LSWS local. Sin este paso, la interfaz web de Nextcloud funciona, pero las aplicaciones no están autorizadas.

'proxies_de_confianza' =>
matriz
0 => '172.16.22.100',
),

Genial, después de eso podemos ingresar a la interfaz de autorización:

Nextcloud dentro y fuera de OpenLiteSpeed: configurar el proxy inverso

¡Problema resuelto! Ahora cada cliente puede usar de forma segura la "nube de archivos" en su propia URL personal, el servidor con archivos está separado de Internet, los futuros clientes recibirán todo igual y ni una sola dirección IP adicional se verá afectada.
Además, puede usar un proxy inverso para entregar contenido estático, pero en el caso de Nextcloud, esto no dará un aumento notable en la velocidad. Así que es opcional y opcional.

Me complace compartir esta historia, espero que sea útil para alguien. Si conoce métodos más elegantes y eficientes para resolver el problema, ¡le agradeceré los comentarios!

Fuente: habr.com

Añadir un comentario