Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Com puc configurar OpenLiteSpeed ​​per invertir el servidor intermediari a Nextcloud a la xarxa interna?

Sorprenentment, una cerca a Habré d'OpenLiteSpeed ​​​​no dóna res! M'afanyo a corregir aquesta injustícia, perquè LSWS és un servidor web decent. M'encanta per la seva velocitat i la seva elegant interfície d'administració web:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Tot i que OpenLiteSpeed ​​​​és més famós com a "accelerador" de WordPress, a l'article d'avui en mostraré un ús força específic. És a dir, el proxy invers de les sol·licituds (proxy invers). Dius que és més comú utilitzar nginx per a això? hi estaré d'acord. Però fa tant de mal que ens vam enamorar de LSWS!

El proxy està bé, però on? Amb un servei no menys meravellós: Nextcloud. Utilitzem Nextcloud per crear "núvols per compartir fitxers" privats. Per a cada client, assignem una màquina virtual independent amb Nextcloud i no volem exposar-los "fora". En comptes d'això, transmetem les sol·licituds mitjançant un servidor intermediari invers comú. Aquesta solució permet:
1) eliminar el servidor on s'emmagatzemen les dades del client d'Internet i
2) desar les adreces IP.

El diagrama té aquest aspecte:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Està clar que l'esquema es simplifica, perquè L'organització de la infraestructura de serveis web no és el tema de l'article d'avui.

També en aquest article ometre la instal·lació i la configuració bàsica del nextcloud, sobretot perquè Habré té materials sobre aquest tema. Però definitivament mostraré la configuració, sense la qual Nextcloud no funcionarà darrere d'un servidor intermediari.

Donat:
Nextcloud està instal·lat a l'amfitrió 1 i està configurat per funcionar amb http (sense SSL), només té una interfície de xarxa local i una adreça IP "grisa" 172.16.22.110.
Configurem OpenLiteSpeed ​​​​a l'amfitrió 2. Té dues interfícies, externa (mira a Internet) i interna amb una adreça IP a la xarxa 172.16.22.0/24
L'adreça IP de la interfície externa de l'amfitrió 2 és el nom DNS cloud.connect.link

Una tasca:
Obteniu des d'Internet mitjançant l'enllaç 'https://cloud.connect.link' (SSL) a Nextcloud a la xarxa interna.

  • Instal·lació d'OpenLiteSpeed ​​​​a Ubuntu 18.04.2.

Afegim un repositori:

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

instal·lar, executar:

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

  • Configuració mínima del tallafoc.

    sudo ufw permet ssh
    sudo ufw per defecte permet sortir
    sudo ufw default deny incoming
    sudo ufw permet http
    sudo ufw permet https
    sudo ufw permet de el vostre amfitrió de gestió a qualsevol port 7080
    sudo ufw habilitar

  • Configureu OpenLiteSpeed ​​com a servidor intermediari invers.
    Creem directoris sota el virtualhost.

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

Configurem l'amfitrió virtual des de la interfície web LSWS.
Obriu la gestió d'URL http://cloud.connect.link:7080
Inici de sessió/contrasenya per defecte: admin/123456

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Afegiu un host virtual (Amfitrions virtuals > Afegeix).
En afegir, apareixerà un missatge d'error: falta el fitxer de configuració. Això és normal, solucionat fent clic a Feu clic per crear.

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

A la pestanya General, especifiqueu l'arrel del document (encara que no és necessari, la configuració no s'enlairarà sense ella). El nom de domini, si no s'especifica, s'agafarà del nom d'amfitrió virtual, al qual hem nomenat el nostre nom de domini.

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Ara és el moment de recordar que no només tenim un servidor web, sinó un servidor intermediari invers. La configuració següent indicarà a LSWS què ha de proxy i on. A la configuració de virtualhost, obriu la pestanya Aplicació externa i afegiu una nova aplicació del tipus de servidor web:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Especifiqueu el nom i l'adreça. Podeu especificar un nom arbitrari, però cal recordar-lo, us serà útil en els passos següents. L'adreça és la on resideix Nextcloud a la xarxa interna:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

A la mateixa configuració de l'amfitrió virtual, obriu la pestanya Context i creeu un context nou del tipus Proxy:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Especifiqueu els paràmetres: URI = /, servidor web = nextcloud_1 (nom del pas anterior)

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Reinicieu LSWS. Això es fa amb un clic des de la interfície web, miracles! (un portador de ratolins hereditari parla en mi)

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers
Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Creem un "oient" (Listeners > Afegeix), anomenem-lo "https". Apunteu-lo al port 443 i tingueu en compte que serà segur:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

A la pestanya SSL, especifiqueu el camí a la clau i el certificat:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

S'ha creat l'"escolta", ara a la secció Virtual Host Mappings hi afegirem el nostre host virtual:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Si LSWS només enviarà un servidor intermediari a un servei, la configuració es pot completar. Però tenim previst utilitzar-lo per enviar sol·licituds a diferents "instàncies" segons el nom de domini. I tots els dominis tindran els seus propis certificats. Per tant, cal que aneu a la configuració de virtualhost i torneu a especificar la seva clau i certificat a la pestanya SSL. En el futur, això s'hauria de fer per a cada nou host virtual.

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Queda per configurar la reescriptura d'URL perquè les sol·licituds http s'adrecen a https.
(Per cert, quan acabarà això? Ha arribat el moment que els navegadors i altres programaris vagin a https de manera predeterminada i, si cal, reenviïn a no-SSL manualment).
Activeu Habilita la reescriptura i escriviu les regles de reescriptura:

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

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

A causa d'un estrany malentès, és impossible aplicar les regles de reescriptura amb el reinici habitual de Graceful. Per tant, reiniciarem LSWS no amb gràcia, sinó amb rudesa i eficàcia:

sudo systemctl reinicieu lsws.service

Per fer que el servidor escolti el port 80, creem un altre listener. Diguem-ne http, especifiqueu el port número 80 i que no serà segur:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Per analogia amb la configuració d'escolta https, adjuntem-hi el nostre host virtual.

Ara LSWS escoltarà al port 80 i enviarà sol·licituds al 443 des d'ell, reescrivint l'url.
En conclusió, recomano baixar el nivell de registre de LSWS, que està configurat a Depuració per defecte. En aquest mode, els registres es multipliquen a la velocitat del llamp! En la majoria dels casos, el nivell d'avís és suficient. Aneu a Configuració del servidor > Registre:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Això completa la configuració d'OpenLiteSpeed ​​com a servidor intermediari invers. Una vegada més, reinicieu LSWS, seguiu l'enllaç https://cloud.connect.link i veure:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Perquè Nextcloud ens permeti entrar, hem d'afegir el domini cloud.connect.link a la llista de confiança. Anem a editar config.php. Vaig instal·lar Nextcloud automàticament en instal·lar Ubuntu i la configuració es troba aquí: /var/snap/nextcloud/current/nextcloud/config.
Afegiu el paràmetre "cloud.connect.link" a la clau trusted_domains:

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

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

A més, a la mateixa configuració, heu d'especificar l'adreça IP del nostre proxy. Crido l'atenció sobre el fet que l'adreça s'ha d'especificar la que és visible per al servidor Nextcloud, és a dir. La IP de la interfície LSWS local. Sense aquest pas, la interfície web de Nextcloud funciona, però les aplicacions no estan autoritzades.

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

Genial, després podem entrar a la interfície d'autorització:

Nextcloud dins i fora d'OpenLiteSpeed: configuració del proxy invers

Problema resolt! Ara cada client pot utilitzar el "núvol de fitxers" de manera segura a la seva pròpia URL personal, el servidor amb fitxers està separat d'Internet, els futurs clients rebran tot igual i no es veurà afectada ni una adreça IP addicional.
A més, podeu utilitzar un servidor intermediari invers per oferir contingut estàtic, però en el cas de Nextcloud, això no donarà un augment notable de la velocitat. Per tant, és opcional i opcional.

M'alegra compartir aquesta història, espero que sigui útil a algú. Si coneixeu mètodes més elegants i eficients per resoldre el problema, us agrairé els comentaris!

Font: www.habr.com

Afegeix comentari