ProHoster > Blog > διαχείριση > Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης
Nextcloud εντός και εκτός OpenLiteSpeed: ρύθμιση αντίστροφου διακομιστή μεσολάβησης
Πώς μπορώ να ρυθμίσω το OpenLiteSpeed για να αντιστρέφει το διακομιστή μεσολάβησης στο Nextcloud στο εσωτερικό δίκτυο;
Παραδόξως, μια αναζήτηση στο Habré για το OpenLiteSpeed δεν δίνει τίποτα! Σπεύδω να διορθώσω αυτήν την αδικία, γιατί το LSWS είναι ένας αξιοπρεπής διακομιστής ιστού. Το λατρεύω για την ταχύτητά του και τη φανταχτερή διεπαφή διαχείρισης ιστού:
Παρόλο που το OpenLiteSpeed είναι πιο διάσημο ως «επιταχυντής» του WordPress, στο σημερινό άρθρο θα δείξω μια μάλλον συγκεκριμένη χρήση του. Δηλαδή reverse proxy των αιτημάτων (reverse proxy). Λέτε ότι είναι πιο συνηθισμένο να χρησιμοποιείται το nginx για αυτό; θα συμφωνήσω. Αλλά πονάει τόσο πολύ που ερωτευτήκαμε το LSWS!
Το proxy είναι εντάξει, αλλά πού; Σε όχι λιγότερο υπέροχη υπηρεσία - Nextcloud. Χρησιμοποιούμε το Nextcloud για να δημιουργήσουμε ιδιωτικά "σύννεφα κοινής χρήσης αρχείων". Για κάθε πελάτη, διαθέτουμε ένα ξεχωριστό VM με το Nextcloud και δεν θέλουμε να το εκθέσουμε "εξωτερικά". Αντίθετα, πραγματοποιούμε αιτήματα μεσολάβησης μέσω ενός κοινού αντίστροφου διακομιστή μεσολάβησης. Αυτή η λύση επιτρέπει:
1) αφαιρέστε τον διακομιστή στον οποίο είναι αποθηκευμένα τα δεδομένα πελάτη από το Διαδίκτυο και
2) αποθήκευση διευθύνσεων IP.
Το διάγραμμα μοιάζει με αυτό:
Είναι σαφές ότι το καθεστώς είναι απλοποιημένο, επειδή οργάνωση της υποδομής υπηρεσιών 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.
Ρυθμίστε το 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
Προσθέστε έναν εικονικό κεντρικό υπολογιστή (Virtual Hosts > Add).
Κατά την προσθήκη, θα εμφανιστεί ένα μήνυμα σφάλματος - το αρχείο διαμόρφωσης λείπει. Αυτό είναι φυσιολογικό, επιλύεται κάνοντας κλικ στο Κάντε κλικ για δημιουργία.
Στην καρτέλα Γενικά, καθορίστε το Document Root (αν και δεν χρειάζεται, η διαμόρφωση δεν θα απογειωθεί χωρίς αυτήν). Το Domain Name, εάν δεν προσδιορίζεται, θα ληφθεί από το Virtual Host Name, το οποίο ονομάσαμε το όνομα τομέα μας.
Τώρα είναι καιρός να θυμηθούμε ότι δεν έχουμε απλώς έναν διακομιστή ιστού, αλλά έναν αντίστροφο διακομιστή μεσολάβησης. Οι ακόλουθες ρυθμίσεις θα υποδείξουν στο LSWS τι να διαμεσολαβήσει και πού. Στις ρυθμίσεις εικονικού κεντρικού υπολογιστή, ανοίξτε την καρτέλα Εξωτερική εφαρμογή και προσθέστε μια νέα εφαρμογή τύπου διακομιστή Web:
Καθορίστε το όνομα και τη διεύθυνση. Μπορείτε να καθορίσετε ένα αυθαίρετο όνομα, αλλά πρέπει να το θυμάστε, θα σας φανεί χρήσιμο στα επόμενα βήματα. Η διεύθυνση είναι αυτή όπου το Nextcloud ζει στο εσωτερικό δίκτυο:
Στις ίδιες ρυθμίσεις εικονικού κεντρικού υπολογιστή, ανοίξτε την καρτέλα Context και δημιουργήστε ένα νέο περιβάλλον τύπου Proxy:
Καθορίστε τις παραμέτρους: URI = /, Διακομιστής Ιστού = nextcloud_1 (όνομα από το προηγούμενο βήμα)
Επανεκκινήστε το LSWS. Αυτό γίνεται με ένα κλικ από το web interface, θαύματα! (ένας κληρονομικός φορέας ποντικιού μιλάει μέσα μου)
Βάζουμε το πιστοποιητικό, διαμορφώνουμε το https. Η διαδικασία για την απόκτηση πιστοποιητικού θα το παραλείψουμε, θα συμφωνήσουμε ότι το έχουμε ήδη και θα τοποθετήσουμε το κλειδί στον κατάλογο /etc/letsencrypt/live/cloud.connect.link.
Ας δημιουργήσουμε έναν «ακροατή» (Listeners > Add), ας τον ονομάσουμε «https». Τοποθετήστε το στη θύρα 443 και σημειώστε ότι θα είναι Secure:
Στην καρτέλα SSL, καθορίστε τη διαδρομή προς το κλειδί και το πιστοποιητικό:
Ο "ακροατής" έχει δημιουργηθεί, τώρα στην ενότητα Virtual Host Mappings θα προσθέσουμε τον εικονικό μας κεντρικό υπολογιστή σε αυτό:
Εάν το LSWS πραγματοποιεί μεσολάβηση μόνο σε μία υπηρεσία, η διαμόρφωση μπορεί να ολοκληρωθεί. Αλλά σκοπεύουμε να το χρησιμοποιήσουμε για να στείλουμε αιτήματα σε διαφορετικές "παρουσίες" ανάλογα με το όνομα τομέα. Και όλοι οι τομείς θα έχουν τα δικά τους πιστοποιητικά. Επομένως, πρέπει να μεταβείτε στη διαμόρφωση του virtualhost και να καθορίσετε ξανά το κλειδί και το πιστοποιητικό του στην καρτέλα SSL. Στο μέλλον, αυτό θα πρέπει να γίνεται για κάθε νέο εικονικό κεντρικό υπολογιστή.
Απομένει να ρυθμίσετε την επανεγγραφή url έτσι ώστε τα αιτήματα http να απευθύνονται στο https. (Παρεμπιπτόντως, πότε θα τελειώσει αυτό; Ήρθε η ώρα τα προγράμματα περιήγησης και το άλλο λογισμικό να μεταβούν στο https από προεπιλογή και να προωθηθούν χειροκίνητα στο no-SSL εάν είναι απαραίτητο).
Ενεργοποιήστε το Enable Rewrite και γράψτε Rewrite Rules:
Λόγω μιας περίεργης παρεξήγησης, είναι αδύνατο να εφαρμοστούν οι κανόνες Rewrite με τη συνήθη Graceful επανεκκίνηση. Επομένως, θα επανεκκινήσουμε το LSWS όχι με χάρη, αλλά αγενώς και αποτελεσματικά:
sudo systemctl επανεκκίνηση του lsws.service
Για να κάνουμε τον διακομιστή να ακούει τη θύρα 80, ας δημιουργήσουμε ένα άλλο πρόγραμμα ακρόασης. Ας το ονομάσουμε http, καθορίστε την 80η θύρα και ότι δεν θα είναι ασφαλής:
Κατ' αναλογία με τη ρύθμιση ακροατή https, ας συνδέσουμε τον εικονικό μας κεντρικό υπολογιστή σε αυτήν.
Τώρα το LSWS θα ακούει στη θύρα 80 και θα στέλνει αιτήματα στο 443 από αυτήν, ξαναγράφοντας το url.
Συμπερασματικά, προτείνω να μειώσετε το επίπεδο καταγραφής LSWS, το οποίο έχει οριστεί ως Εντοπισμός σφαλμάτων από προεπιλογή. Σε αυτή τη λειτουργία, τα κούτσουρα πολλαπλασιάζονται με ταχύτητα αστραπής! Για τις περισσότερες περιπτώσεις, το επίπεδο προειδοποίησης είναι αρκετό. Μεταβείτε στη Διαμόρφωση διακομιστή > Καταγραφή:
Αυτό ολοκληρώνει τη διαμόρφωση του OpenLiteSpeed ως αντίστροφου διακομιστή μεσολάβησης. Για άλλη μια φορά, επανεκκινήστε το LSWS, ακολουθήστε τον σύνδεσμο https://cloud.connect.link και βλέπουμε:
Για να μας επιτρέψει το Nextcloud, πρέπει να προσθέσουμε τον τομέα cloud.connect.link στη λίστα αξιόπιστων. Ας επεξεργαστούμε το config.php. Εγκατέστησα αυτόματα το Nextcloud κατά την εγκατάσταση του Ubuntu και η διαμόρφωση βρίσκεται εδώ: /var/snap/nextcloud/current/nextcloud/config.
Προσθέστε την παράμετρο «cloud.connect.link» στο κλειδί trusted_domains:
Επιπλέον, στην ίδια διαμόρφωση, πρέπει να καθορίσετε τη διεύθυνση IP του διακομιστή μεσολάβησης μας. Εφιστώ την προσοχή σας στο γεγονός ότι η διεύθυνση πρέπει να οριστεί αυτή που είναι ορατή στον διακομιστή Nextcloud, δηλ. Η IP της τοπικής διεπαφής LSWS. Χωρίς αυτό το βήμα, η διεπαφή ιστού Nextcloud λειτουργεί, αλλά οι εφαρμογές δεν είναι εξουσιοδοτημένες.
Ωραία, μετά από αυτό μπορούμε να μπούμε στη διεπαφή εξουσιοδότησης:
Το πρόβλημα λύθηκε! Τώρα κάθε πελάτης μπορεί να χρησιμοποιήσει με ασφάλεια το «σύννεφο αρχείων» στη δική του προσωπική διεύθυνση url, ο διακομιστής με τα αρχεία είναι διαχωρισμένος από το Διαδίκτυο, οι μελλοντικοί πελάτες θα λαμβάνουν τα πάντα το ίδιο και δεν θα επηρεαστεί ούτε μία επιπλέον διεύθυνση IP.
Επιπλέον, μπορείτε να χρησιμοποιήσετε έναν αντίστροφο διακομιστή μεσολάβησης για να παραδώσετε στατικό περιεχόμενο, αλλά στην περίπτωση του Nextcloud, αυτό δεν θα δώσει αξιοσημείωτη αύξηση στην ταχύτητα. Άρα είναι προαιρετικό και προαιρετικό.
Χαίρομαι που μοιράζομαι αυτήν την ιστορία, ελπίζω να είναι χρήσιμη σε κάποιον. Εάν γνωρίζετε πιο κομψές και αποτελεσματικές μεθόδους για την επίλυση του προβλήματος, θα σας είμαι ευγνώμων για τα σχόλια!