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:
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:
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.
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
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.
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.
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:
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:
A la mateixa configuració de l'amfitrió virtual, obriu la pestanya Context i creeu un context nou del tipus Proxy:
Especifiqueu els paràmetres: URI = /, servidor web = nextcloud_1 (nom del pas anterior)
Reinicieu LSWS. Això es fa amb un clic des de la interfície web, miracles! (un portador de ratolins hereditari parla en mi)
Posem el certificat, configurem https. El procediment per a l'obtenció d'un certificat l'ometem, acceptarem que ja la tenim i ens trobarem amb la clau al directori /etc/letsencrypt/live/cloud.connect.link.
Creem un "oient" (Listeners > Afegeix), anomenem-lo "https". Apunteu-lo al port 443 i tingueu en compte que serà segur:
A la pestanya SSL, especifiqueu el camí a la clau i el certificat:
S'ha creat l'"escolta", ara a la secció Virtual Host Mappings hi afegirem el nostre host virtual:
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.
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]
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:
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:
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:
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:
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.
Genial, després podem entrar a la interfície d'autorització:
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!