Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Πώς μπορώ να ρυθμίσω το OpenLiteSpeed ​​για να αντιστρέφει το διακομιστή μεσολάβησης στο Nextcloud στο εσωτερικό δίκτυο;

Παραδόξως, μια αναζήτηση στο Habré για το OpenLiteSpeed ​​δεν δίνει τίποτα! Σπεύδω να διορθώσω αυτήν την αδικία, γιατί το LSWS είναι ένας αξιοπρεπής διακομιστής ιστού. Το λατρεύω για την ταχύτητά του και τη φανταχτερή διεπαφή διαχείρισης ιστού:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Παρόλο που το OpenLiteSpeed ​​είναι πιο διάσημο ως «επιταχυντής» του WordPress, στο σημερινό άρθρο θα δείξω μια μάλλον συγκεκριμένη χρήση του. Δηλαδή reverse proxy των αιτημάτων (reverse proxy). Λέτε ότι είναι πιο συνηθισμένο να χρησιμοποιείται το nginx για αυτό; θα συμφωνήσω. Αλλά πονάει τόσο πολύ που ερωτευτήκαμε το LSWS!

Το proxy είναι εντάξει, αλλά πού; Σε όχι λιγότερο υπέροχη υπηρεσία - Nextcloud. Χρησιμοποιούμε το Nextcloud για να δημιουργήσουμε ιδιωτικά "σύννεφα κοινής χρήσης αρχείων". Για κάθε πελάτη, διαθέτουμε ένα ξεχωριστό VM με το Nextcloud και δεν θέλουμε να το εκθέσουμε "εξωτερικά". Αντίθετα, πραγματοποιούμε αιτήματα μεσολάβησης μέσω ενός κοινού αντίστροφου διακομιστή μεσολάβησης. Αυτή η λύση επιτρέπει:
1) αφαιρέστε τον διακομιστή στον οποίο είναι αποθηκευμένα τα δεδομένα πελάτη από το Διαδίκτυο και
2) αποθήκευση διευθύνσεων IP.

Το διάγραμμα μοιάζει με αυτό:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Είναι σαφές ότι το καθεστώς είναι απλοποιημένο, επειδή οργάνωση της υποδομής υπηρεσιών web δεν είναι το θέμα του σημερινού άρθρου.

Επίσης σε αυτό το άρθρο θα παραλείψω την εγκατάσταση και τη βασική διαμόρφωση του nextcloud, ειδικά επειδή υπάρχουν υλικά για αυτό το θέμα στο Habré. Αλλά σίγουρα θα δείξω τις ρυθμίσεις, χωρίς τις οποίες το Nextcloud δεν θα λειτουργεί πίσω από διακομιστή μεσολάβησης.

Δεδομένος:
Το Nextcloud είναι εγκατεστημένο στον κεντρικό υπολογιστή 1 και έχει ρυθμιστεί να λειτουργεί μέσω http (χωρίς SSL), έχει μόνο μια διεπαφή τοπικού δικτύου και μια "γκρίζα" διεύθυνση IP 172.16.22.110.
Ας διαμορφώσουμε το OpenLiteSpeed ​​στον κεντρικό υπολογιστή 2. Έχει δύο διεπαφές, εξωτερική (βλέπει στο Διαδίκτυο) και εσωτερική με διεύθυνση IP στο δίκτυο 172.16.22.0/24
Η διεύθυνση IP της εξωτερικής διεπαφής του κεντρικού υπολογιστή 2 είναι όνομα DNS cloud.connect.link

Εργασία:
Λάβετε από το Διαδίκτυο μέσω του συνδέσμου 'https://cloud.connect.link' (SSL) στο Nextcloud στο εσωτερικό δίκτυο.

  • Εγκατάσταση του OpenLiteSpeed ​​στο Ubuntu 18.04.2.

Ας προσθέσουμε ένα αποθετήριο:

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

εγκατάσταση, εκτέλεση:

sudo apt-get εγκατάσταση openlitespeed
έναρξη sudo /usr/local/lsws/bin/lswsctrl

  • Ελάχιστη ρύθμιση τείχους προστασίας.

    sudo ufw επιτρέπω ssh
    sudo ufw προεπιλογή επιτρέπουν εξερχόμενες
    sudo ufw προεπιλεγμένη άρνηση εισερχόμενης
    sudo ufw επιτρέπουν http
    sudo ufw επιτρέπει https
    sudo ufw επιτρέπουν από οικοδεσπότης διαχείρισης σε οποιαδήποτε θύρα 7080
    sudo ufw ενεργοποίηση

  • Ρυθμίστε το OpenLiteSpeed ​​ως αντίστροφο διακομιστή μεσολάβησης.
    Ας δημιουργήσουμε καταλόγους κάτω από τον virtualhost.

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

Ας διαμορφώσουμε τον εικονικό κεντρικό υπολογιστή από τη διεπαφή ιστού LSWS.
Ανοίξτε τη διαχείριση url http://cloud.connect.link:7080
Προεπιλεγμένη σύνδεση/κωδικός πρόσβασης: admin/123456

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Προσθέστε έναν εικονικό κεντρικό υπολογιστή (Virtual Hosts > Add).
Κατά την προσθήκη, θα εμφανιστεί ένα μήνυμα σφάλματος - το αρχείο διαμόρφωσης λείπει. Αυτό είναι φυσιολογικό, επιλύεται κάνοντας κλικ στο Κάντε κλικ για δημιουργία.

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Στην καρτέλα Γενικά, καθορίστε το Document Root (αν και δεν χρειάζεται, η διαμόρφωση δεν θα απογειωθεί χωρίς αυτήν). Το Domain Name, εάν δεν προσδιορίζεται, θα ληφθεί από το Virtual Host Name, το οποίο ονομάσαμε το όνομα τομέα μας.

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Τώρα είναι καιρός να θυμηθούμε ότι δεν έχουμε απλώς έναν διακομιστή ιστού, αλλά έναν αντίστροφο διακομιστή μεσολάβησης. Οι ακόλουθες ρυθμίσεις θα υποδείξουν στο LSWS τι να διαμεσολαβήσει και πού. Στις ρυθμίσεις εικονικού κεντρικού υπολογιστή, ανοίξτε την καρτέλα Εξωτερική εφαρμογή και προσθέστε μια νέα εφαρμογή τύπου διακομιστή Web:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Καθορίστε το όνομα και τη διεύθυνση. Μπορείτε να καθορίσετε ένα αυθαίρετο όνομα, αλλά πρέπει να το θυμάστε, θα σας φανεί χρήσιμο στα επόμενα βήματα. Η διεύθυνση είναι αυτή όπου το Nextcloud ζει στο εσωτερικό δίκτυο:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Στις ίδιες ρυθμίσεις εικονικού κεντρικού υπολογιστή, ανοίξτε την καρτέλα Context και δημιουργήστε ένα νέο περιβάλλον τύπου Proxy:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Καθορίστε τις παραμέτρους: URI = /, Διακομιστής Ιστού = nextcloud_1 (όνομα από το προηγούμενο βήμα)

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Επανεκκινήστε το LSWS. Αυτό γίνεται με ένα κλικ από το web interface, θαύματα! (ένας κληρονομικός φορέας ποντικιού μιλάει μέσα μου)

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης
Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Ας δημιουργήσουμε έναν «ακροατή» (Listeners > Add), ας τον ονομάσουμε «https». Τοποθετήστε το στη θύρα 443 και σημειώστε ότι θα είναι Secure:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Στην καρτέλα SSL, καθορίστε τη διαδρομή προς το κλειδί και το πιστοποιητικό:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Ο "ακροατής" έχει δημιουργηθεί, τώρα στην ενότητα Virtual Host Mappings θα προσθέσουμε τον εικονικό μας κεντρικό υπολογιστή σε αυτό:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Εάν το LSWS πραγματοποιεί μεσολάβηση μόνο σε μία υπηρεσία, η διαμόρφωση μπορεί να ολοκληρωθεί. Αλλά σκοπεύουμε να το χρησιμοποιήσουμε για να στείλουμε αιτήματα σε διαφορετικές "παρουσίες" ανάλογα με το όνομα τομέα. Και όλοι οι τομείς θα έχουν τα δικά τους πιστοποιητικά. Επομένως, πρέπει να μεταβείτε στη διαμόρφωση του virtualhost και να καθορίσετε ξανά το κλειδί και το πιστοποιητικό του στην καρτέλα SSL. Στο μέλλον, αυτό θα πρέπει να γίνεται για κάθε νέο εικονικό κεντρικό υπολογιστή.

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Απομένει να ρυθμίσετε την επανεγγραφή url έτσι ώστε τα αιτήματα http να απευθύνονται στο https.
(Παρεμπιπτόντως, πότε θα τελειώσει αυτό; Ήρθε η ώρα τα προγράμματα περιήγησης και το άλλο λογισμικό να μεταβούν στο https από προεπιλογή και να προωθηθούν χειροκίνητα στο no-SSL εάν είναι απαραίτητο).
Ενεργοποιήστε το Enable Rewrite και γράψτε Rewrite Rules:

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

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Λόγω μιας περίεργης παρεξήγησης, είναι αδύνατο να εφαρμοστούν οι κανόνες Rewrite με τη συνήθη Graceful επανεκκίνηση. Επομένως, θα επανεκκινήσουμε το LSWS όχι με χάρη, αλλά αγενώς και αποτελεσματικά:

sudo systemctl επανεκκίνηση του lsws.service

Για να κάνουμε τον διακομιστή να ακούει τη θύρα 80, ας δημιουργήσουμε ένα άλλο πρόγραμμα ακρόασης. Ας το ονομάσουμε http, καθορίστε την 80η θύρα και ότι δεν θα είναι ασφαλής:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Κατ' αναλογία με τη ρύθμιση ακροατή https, ας συνδέσουμε τον εικονικό μας κεντρικό υπολογιστή σε αυτήν.

Τώρα το LSWS θα ακούει στη θύρα 80 και θα στέλνει αιτήματα στο 443 από αυτήν, ξαναγράφοντας το url.
Συμπερασματικά, προτείνω να μειώσετε το επίπεδο καταγραφής LSWS, το οποίο έχει οριστεί ως Εντοπισμός σφαλμάτων από προεπιλογή. Σε αυτή τη λειτουργία, τα κούτσουρα πολλαπλασιάζονται με ταχύτητα αστραπής! Για τις περισσότερες περιπτώσεις, το επίπεδο προειδοποίησης είναι αρκετό. Μεταβείτε στη Διαμόρφωση διακομιστή > Καταγραφή:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Αυτό ολοκληρώνει τη διαμόρφωση του OpenLiteSpeed ​​ως αντίστροφου διακομιστή μεσολάβησης. Για άλλη μια φορά, επανεκκινήστε το LSWS, ακολουθήστε τον σύνδεσμο https://cloud.connect.link και βλέπουμε:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Για να μας επιτρέψει το Nextcloud, πρέπει να προσθέσουμε τον τομέα cloud.connect.link στη λίστα αξιόπιστων. Ας επεξεργαστούμε το config.php. Εγκατέστησα αυτόματα το Nextcloud κατά την εγκατάσταση του Ubuntu και η διαμόρφωση βρίσκεται εδώ: /var/snap/nextcloud/current/nextcloud/config.
Προσθέστε την παράμετρο «cloud.connect.link» στο κλειδί trusted_domains:

'trusted_domains' =>
πίνακας (
0 => "172.16.22.110",
1 => 'cloud.connect.link',
),

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Επιπλέον, στην ίδια διαμόρφωση, πρέπει να καθορίσετε τη διεύθυνση IP του διακομιστή μεσολάβησης μας. Εφιστώ την προσοχή σας στο γεγονός ότι η διεύθυνση πρέπει να οριστεί αυτή που είναι ορατή στον διακομιστή Nextcloud, δηλ. Η IP της τοπικής διεπαφής LSWS. Χωρίς αυτό το βήμα, η διεπαφή ιστού Nextcloud λειτουργεί, αλλά οι εφαρμογές δεν είναι εξουσιοδοτημένες.

'trusted_proxies' =>
πίνακας (
0 => "172.16.22.100",
),

Ωραία, μετά από αυτό μπορούμε να μπούμε στη διεπαφή εξουσιοδότησης:

Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης

Το πρόβλημα λύθηκε! Τώρα κάθε πελάτης μπορεί να χρησιμοποιήσει με ασφάλεια το «σύννεφο αρχείων» στη δική του προσωπική διεύθυνση url, ο διακομιστής με τα αρχεία είναι διαχωρισμένος από το Διαδίκτυο, οι μελλοντικοί πελάτες θα λαμβάνουν τα πάντα το ίδιο και δεν θα επηρεαστεί ούτε μία επιπλέον διεύθυνση IP.
Επιπλέον, μπορείτε να χρησιμοποιήσετε έναν αντίστροφο διακομιστή μεσολάβησης για να παραδώσετε στατικό περιεχόμενο, αλλά στην περίπτωση του Nextcloud, αυτό δεν θα δώσει αξιοσημείωτη αύξηση στην ταχύτητα. Άρα είναι προαιρετικό και προαιρετικό.

Χαίρομαι που μοιράζομαι αυτήν την ιστορία, ελπίζω να είναι χρήσιμη σε κάποιον. Εάν γνωρίζετε πιο κομψές και αποτελεσματικές μεθόδους για την επίλυση του προβλήματος, θα σας είμαι ευγνώμων για τα σχόλια!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο