Nextcloud à l'intérieur et à l'extérieur d'OpenLiteSpeed: configurer le proxy inverse

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:


image


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:


  1. supprimer le serveur sur lequel les données client sont stockées d'Internet et
  2. enregistrer les adresses IP.

Le schéma ressemble à ceci:


image


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


image


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.


image


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.


image


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:


image


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:


image


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


image


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


image


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


image


image


  • 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é:


image


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


image


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


image


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.


image


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]

image


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é:


image


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:


image


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:


image


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',
),

image


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:


image


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!

Source: https://habr.com/ru/post/fr452750/


All Articles