Comment configurer OpenLiteSpeed ââpour inverser le proxy dans Nextcloud, situĂ© sur le rĂ©seau interne?
Ătonnamment, une recherche sur HabrĂ© pour OpenLiteSpeed ââne donne rien! Je m'empresse de corriger cette injustice, car LSWS est un serveur Web digne. Je l'aime pour l'interface d'administration Web rapide et Ă la mode:

MalgrĂ© le fait que OpenLiteSpeed ââest surtout connu comme un "accĂ©lĂ©rateur" de WordPress, dans l'article d'aujourd'hui, je vais montrer son application plutĂŽt spĂ©cifique. Ă savoir inverser les demandes de proxy (proxy inverse). Vous dites qu'il est plus courant d'utiliser nginx pour cela? Je serai d'accord. Mais ça nous a vraiment fait mal d'aimer LSWS!
Procuration ok, mais oĂč? Nextcloud est un service tout aussi merveilleux. Nous utilisons Nextcloud pour crĂ©er des «nuages ââde partage de fichiers» privĂ©s. Pour chaque client, nous allouons une machine virtuelle distincte avec Nextcloud, et nous ne voulons pas les exposer "out". Au lieu de cela, nous mandatons les demandes via un proxy inverse commun. Cette solution vous permet de:
- supprimer le serveur sur lequel les données client sont stockées d'Internet et
- enregistrer les adresses IP.
Le schéma ressemble à ceci:

Il est clair que le schéma est simplifié, car l'organisation d'une infrastructure de services Web n'est pas le sujet de l'article d'aujourd'hui.
Aussi dans cet article je vais omettre l'installation et la configuration de base de non-clauda, ââd'autant plus qu'il y a des matĂ©riaux sur ce sujet sur HabrĂ©. Mais je vais certainement montrer les paramĂštres, sans lesquels Nextcloud ne fonctionnera pas pour le proxy.
Ătant donnĂ©: Nextcloud est installĂ© sur l'hĂŽte 1 et configurĂ© pour fonctionner via http (sans SSL), il n'a qu'une interface rĂ©seau locale et une adresse IP "grise" 172.16.22.110.
Configurons OpenLiteSpeed ââsur l'hĂŽte 2. Il a deux interfaces, une externe (regarde sur Internet) et une interne avec une adresse IP sur le rĂ©seau 172.16.22.0/24
Le nom DNS cloud.connect.link mĂšne Ă l'adresse IP de l'interface externe de l'hĂŽte 2
Tùche: se rendre d'Internet via le lien ' https://cloud.connect.link ' (SSL) vers Nextcloud sur le réseau interne.
- Installez OpenLiteSpeed ââsur Ubuntu 18.04.2.
Ajoutez un référentiel:
wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh | sudo bash
mise Ă jour sudo apt-get
définir, exécuter:
sudo apt-get install openlitespeed
sudo / usr / local / lsws / bin / lswsctrl start
- Minimisez le pare-feu.
sudo ufw autorise ssh
sudo ufw par défaut autorise les sorties
sudo ufw par défaut refuser l'entrée
sudo ufw autorise http
sudo ufw autorise https
sudo ufw autorise depuis votre hĂŽte de gestion vers n'importe quel port 7080
sudo ufw enable
- Configurez OpenLiteSpeed ââen tant que proxy inverse.
Créez des répertoires pour virtualhost.
cd / usr / local / lsws /
sudo mkdirc cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf, html, logs}
sudo chown lsadm: lsadm ./conf/
Configurez l'hĂŽte virtuel Ă partir de l'interface Web LSWS.
Ouvrez la gestion des URL http://cloud.connect.link:7080
Identifiant / mot de passe par défaut: admin / 123456

Ajoutez un hĂŽte virtuel (HĂŽtes virtuels> Ajouter).
Lors de l'ajout, un message d'erreur apparaßt - il n'y a pas de fichier de configuration. Ceci est normal, résolu en cliquant sur Cliquer pour créer.

Dans l'onglet Général, spécifiez Document Root (bien qu'il ne soit pas nécessaire, la configuration ne démarrera pas sans elle). Le nom de domaine, s'il n'est pas spécifié, sera tiré du nom d'hÎte virtuel, que nous avons nommé le nom de notre domaine.

Il est maintenant temps de se rappeler que nous n'avons pas seulement un serveur Web, mais un proxy inverse. Les paramĂštres suivants indiquent Ă LSWS ce qu'il faut proxy et oĂč. Dans les paramĂštres de l'hĂŽte virtuel, ouvrez l'onglet Application externe et ajoutez une nouvelle application telle qu'un serveur Web:

Indiquez le nom et l'adresse. Le nom peut ĂȘtre spĂ©cifiĂ© arbitrairement, mais il doit ĂȘtre mĂ©morisĂ©, utile dans les Ă©tapes suivantes. L'adresse est l'endroit oĂč Nextcloud vit sur le rĂ©seau interne:

Dans les mĂȘmes paramĂštres de l'hĂŽte virtuel, ouvrez l'onglet Contexte et crĂ©ez un nouveau contexte de type Proxy:

Spécifiez les paramÚtres: URI = /, Web server = nextcloud_1 (nom de l'étape précédente)

Redémarrez LSWS. Cela se fait en un clic depuis l'interface web, miracles! (le porte-souris héréditaire parle en moi)


- Nous mettons le certificat, configurez https.
Nous allons omettre la procédure d'obtention d'un certificat , convenir que nous l'avons déjà et coucher avec la clé dans le répertoire /etc/letsencrypt/live/cloud.connect.link.
Créez un «auditeur» (Listeners> Add), appelez-le «https». Nous le pointons sur le port 443 et notons qu'il sera sécurisé:

Dans l'onglet SSL, spécifiez le chemin d'accÚs à la clé et au certificat:

Un «écouteur» a été créé, maintenant dans la section Virtual Host Mappings nous y ajoutons notre hÎte virtuel:

Si LSWS se connecte Ă un seul service, la configuration peut ĂȘtre terminĂ©e. Mais nous prĂ©voyons de l'utiliser pour transfĂ©rer des demandes Ă diffĂ©rentes "autoritĂ©s" en fonction du nom de domaine. Et tous les domaines auront leurs propres certificats. Par consĂ©quent, vous devez accĂ©der Ă la configuration de virtualhost et spĂ©cifier Ă nouveau sa clĂ© et son certificat dans l'onglet SSL. Ă l'avenir, cela doit ĂȘtre fait pour chaque nouvel hĂŽte virtuel.

Il reste Ă configurer la réécriture d'URL afin que les requĂȘtes http soient adressĂ©es Ă https.
(Soit dit en passant, quand cela se terminera-t-il? Il est temps que les navigateurs et autres logiciels accÚdent à https par défaut et effectuent un transfert sans SSL manuellement si nécessaire).
Activer Activer la réécriture et écrire des rÚgles de réécriture:
RewriteCond% {SERVER_PORT} 80
RewriteRule ^ (. *) $ Https: //% {SERVER_NAME}% {REQUEST_URI } [R = 301, L]

Il est impossible d'appliquer les rÚgles de réécriture avec le redémarrage Graceful habituel en raison d'un étrange malentendu. Par conséquent, le redémarrage de LSWS n'est pas élégant, mais grossier et efficace:
sudo systemctl restart lsws.service
Pour que le serveur écoute le 80e port, créez un autre écouteur. Appelons-le http, spécifiez le 80e port et qu'il sera non sécurisé:

Par analogie avec la configuration de l'écouteur https, attachons-y notre hÎte virtuel.
Maintenant, LSWS Ă©coutera le 80e port et enverra des requĂȘtes Ă celui-ci au 443, en réécrivant l'URL.
En conclusion, je recommande d'abaisser le niveau de journalisation LSWS, qui est défini comme Debug par défaut. Dans ce mode, les journaux se multiplient à une vitesse fulgurante! Dans la plupart des cas, un niveau d'avertissement est suffisant. Accédez à Configuration du serveur> Journal:

Ceci termine la configuration d'OpenLiteSpeed ââen tant que proxy inverse. Encore une fois, nous redĂ©marrons LSWS, suivez le lien https://cloud.connect.link et voyez:

Pour que Nextcloud nous laisse entrer, vous devez ajouter le domaine cloud.connect.link à la liste des domaines de confiance. Allez éditer config.php. J'ai installé Nextcloud automatiquement lors de l'installation d'Ubuntu et la configuration est ici: / var / snap / nextcloud / current / nextcloud / config.
à la clé trusted_domains, ajoutez le paramÚtre 'cloud.connect.link':
'trusted_domains' =>
tableau (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

De plus, dans la mĂȘme configuration, vous devez spĂ©cifier l'adresse IP de notre proxy. J'attire l'attention sur le fait que l'adresse doit ĂȘtre spĂ©cifiĂ©e, visible par le serveur Nextcloud, c'est-Ă -dire Interface locale IP LSWS. Sans cette Ă©tape, l'interface Web Nextcloud fonctionne, mais les applications ne sont pas autorisĂ©es.
'trusted_proxies' =>
tableau (
0 => '172.16.22.100',
),
Eh bien, aprĂšs cela, nous pouvons entrer dans l'interface d'autorisation:

Le problĂšme est rĂ©solu! Maintenant, chaque client peut utiliser en toute sĂ©curitĂ© le «nuage de fichiers» dans son URL personnelle, le serveur avec les fichiers est sĂ©parĂ© d'Internet, les futurs clients obtiendront la mĂȘme chose et aucune adresse IP supplĂ©mentaire ne sera affectĂ©e.
De plus, vous pouvez utiliser un proxy inverse pour fournir du contenu statique, mais dans le cas de Nextcloud, cela n'entraĂźnera pas une augmentation notable de la vitesse. C'est donc facultatif et facultatif.
Heureux de partager cette histoire, j'espÚre que quelqu'un vous sera utile. Si vous connaissez des méthodes plus élégantes et efficaces pour résoudre la tùche - je serai reconnaissant pour les commentaires!