Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Come configuro OpenLiteSpeed ​​​​per invertire il proxy su Nextcloud sulla rete interna?

Sorprendentemente, una ricerca su Habré per OpenLiteSpeed ​​​​non dà nulla! Mi affretto a correggere questa ingiustizia, perché LSWS è un server web decente. Lo adoro per la sua velocità e l'elegante interfaccia di amministrazione web:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Anche se OpenLiteSpeed ​​​​è famoso soprattutto come "acceleratore" di WordPress, nell'articolo di oggi ne mostrerò un uso piuttosto specifico. Vale a dire proxy inverso delle richieste (proxy inverso). Dici che è più comune usare nginx per questo? sarò d'accordo. Ma fa così male che ci siamo innamorati di LSWS!

Il proxy va bene, ma dove? In un servizio non meno meraviglioso: Nextcloud. Utilizziamo Nextcloud per creare "nuvole di condivisione file" private. Per ogni cliente, assegniamo una VM separata con Nextcloud e non vogliamo esporli "all'esterno". Invece, inoltriamo le richieste tramite un proxy inverso comune. Questa soluzione consente:
1) rimuovere il server su cui sono archiviati i dati del cliente da Internet e
2) salvare gli indirizzi IP.

Il diagramma ha questo aspetto:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

È chiaro che lo schema è semplificato, perché l'organizzazione dell'infrastruttura dei servizi web non è l'argomento dell'articolo di oggi.

Anche in questo articolo ometterò l'installazione e la configurazione di base del nextcloud, soprattutto perché ci sono materiali su questo argomento su Habré. Ma mostrerò sicuramente le impostazioni, senza le quali Nextcloud non funzionerà dietro un proxy.

data:
Nextcloud è installato sull'host 1 e configurato per funzionare su http (senza SSL), ha solo un'interfaccia di rete locale e un indirizzo IP "grigio" 172.16.22.110.
Configuriamo OpenLiteSpeed ​​​​sull'host 2. Ha due interfacce, esterna (guarda a Internet) e interna con un indirizzo IP sulla rete 172.16.22.0/24
L'indirizzo IP dell'interfaccia esterna dell'host 2 è il nome DNS cloud.connect.link

obiettivo:
Ottenere da Internet tramite il collegamento 'https://cloud.connect.link' (SSL) a Nextcloud sulla rete interna.

  • Installazione di OpenLiteSpeed ​​​​su Ubuntu 18.04.2.

Aggiungiamo un repository:

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

installa, esegui:

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

  • Configurazione minima del firewall.

    sudo ufw consenti ssh
    sudo ufw predefinito consenti in uscita
    sudo ufw predefinito nega in entrata
    sudo ufw consentire http
    sudo ufw consenti https
    sudo ufw consenti da il tuo host di gestione a qualsiasi porta 7080
    sudo ufw enable

  • Imposta OpenLiteSpeed ​​​​come proxy inverso.
    Creiamo le directory sotto il virtualhost.

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

Configuriamo l'host virtuale dall'interfaccia web di LSWS.
Apri la gestione degli URL http://cloud.connect.link:7080
Login/password predefiniti: admin/123456

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Aggiungere un host virtuale (host virtuali > Aggiungi).
Durante l'aggiunta, verrà visualizzato un messaggio di errore: il file di configurazione è mancante. Questo è normale, risolto facendo clic su Fare clic per creare.

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Nella scheda Generale, specifica la radice del documento (sebbene non sia necessario, la configurazione non decollerà senza di essa). Il Domain Name, se non specificato, verrà preso dal Virtual Host Name, che abbiamo chiamato il nostro nome di dominio.

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Ora è il momento di ricordare che non abbiamo solo un server web, ma un proxy inverso. Le seguenti impostazioni diranno a LSWS cosa proxy e dove. Nelle impostazioni dell'host virtuale, apri la scheda App esterna e aggiungi una nuova applicazione del tipo di server Web:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Specificare il nome e l'indirizzo. Puoi specificare un nome arbitrario, ma devi ricordarlo, ti tornerà utile nei passaggi successivi. L'indirizzo è quello in cui risiede Nextcloud nella rete interna:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Nelle stesse impostazioni dell'host virtuale, apri la scheda Contesto e crea un nuovo contesto di tipo Proxy:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Specificare i parametri: URI = /, Web server = nextcloud_1 (nome del passaggio precedente)

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Riavvia LSWS. Questo viene fatto con un clic dall'interfaccia web, miracoli! (in me parla un portatore ereditario di topi)

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso
Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

  • Mettiamo il certificato, configuriamo https.
    La procedura per ottenere un certificato lo ometteremo, accetteremo di averlo già e giaceremo con la chiave nella directory /etc/letsencrypt/live/cloud.connect.link.

Creiamo un "ascoltatore" (Ascoltatori > Aggiungi), chiamiamolo "https". Puntalo sulla porta 443 e nota che sarà sicuro:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Nella scheda SSL, specifica il percorso della chiave e del certificato:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Il "listener" è stato creato, ora nella sezione Virtual Host Mappings aggiungeremo ad esso il nostro virtual host:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Se LSWS eseguirà il proxy solo per un servizio, la configurazione può essere completata. Ma prevediamo di usarlo per inviare richieste a diverse "istanze" a seconda del nome di dominio. E tutti i domini avranno i propri certificati. Pertanto, è necessario accedere alla configurazione dell'host virtuale e specificare nuovamente la chiave e il certificato nella scheda SSL. In futuro, questo dovrebbe essere fatto per ogni nuovo host virtuale.

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Resta da configurare la riscrittura dell'URL in modo che le richieste http siano indirizzate a https.
(A proposito, quando finirà? È ora che i browser e altri software accedano a https per impostazione predefinita e inoltrino manualmente a no-SSL se necessario).
Attiva Abilita riscrittura e scrivi regole di riscrittura:

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

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

A causa di uno strano malinteso, è impossibile applicare le regole di riscrittura con il solito riavvio di Graceful. Pertanto, riavvieremo LSWS non con garbo, ma in modo sgarbato ed efficiente:

sudo systemctl riavviare lsws.service

Per fare in modo che il server ascolti sulla porta 80, creiamo un altro Listener. Chiamiamolo http, specifichiamo l'80a porta e che sarà non sicura:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Per analogia con l'impostazione del listener https, alleghiamo il nostro host virtuale ad esso.

Ora LSWS ascolterà sulla porta 80 e da essa invierà richieste alla 443, riscrivendo l'url.
In conclusione, consiglio di abbassare il livello di registrazione LSWS, che è impostato su Debug per impostazione predefinita. In questa modalità, i tronchi si moltiplicano alla velocità della luce! Nella maggior parte dei casi, il livello di avviso è sufficiente. Vai a Configurazione server > Registro:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Questo completa la configurazione di OpenLiteSpeed ​​​​come proxy inverso. Ancora una volta, riavvia LSWS, segui il link https://cloud.connect.link e vedi:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Affinché Nextcloud ci permetta di entrare, dobbiamo aggiungere il dominio cloud.connect.link all'elenco attendibile. Andiamo a modificare config.php. Ho installato Nextcloud automaticamente durante l'installazione di Ubuntu e la configurazione si trova qui: /var/snap/nextcloud/current/nextcloud/config.
Aggiungi il parametro "cloud.connect.link" alla chiave trusted_domains:

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

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Inoltre, nella stessa configurazione, devi specificare l'indirizzo IP del nostro proxy. Attiro la tua attenzione sul fatto che l'indirizzo deve essere specificato quello che è visibile al server Nextcloud, ad es. L'IP dell'interfaccia LSWS locale. Senza questo passaggio, l'interfaccia web di Nextcloud funziona, ma le applicazioni non sono autorizzate.

'trusted_proxies' =>
Vettore (
0 => "172.16.22.100",
),

Bene, dopodiché possiamo entrare nell'interfaccia di autorizzazione:

Nextcloud all'interno e all'esterno di OpenLiteSpeed: impostazione del proxy inverso

Problema risolto! Ora ogni cliente può utilizzare in sicurezza il "file cloud" al proprio URL personale, il server con i file è separato da Internet, i futuri clienti riceveranno tutto allo stesso modo e non sarà interessato un singolo indirizzo IP aggiuntivo.
Inoltre, puoi utilizzare un proxy inverso per fornire contenuti statici, ma nel caso di Nextcloud, ciò non darà un notevole aumento della velocità. Quindi è facoltativo e facoltativo.

Sono felice di condividere questa storia, spero possa essere utile a qualcuno. Se conosci metodi più eleganti ed efficienti per risolvere il problema, ti sarò grato per i commenti!

Fonte: habr.com

Aggiungi un commento