EQVPS

Πώς να στήσετε έναν αντίστροφο proxy nginx με HTTPS

Βάλτε έναν καθαρό τομέα και αυτόματο HTTPS μπροστά από οποιαδήποτε εφαρμογή ακούει σε τοπική θύρα. Δύο δρόμοι: nginx με Certbot, ή Caddy για αυτόματο TLS σε μία γραμμή. Βήμα βήμα, με έτοιμη προς αντιγραφή διαμόρφωση.

Οι περισσότερες αυτο-φιλοξενούμενες εφαρμογές ακούν σε μια τοπική θύρα όπως 127.0.0.1:3000 και μιλούν απλό HTTP. Ένας αντίστροφος proxy στέκεται μπροστά στις θύρες 80/443, τερματίζει το HTTPS με ένα πραγματικό πιστοποιητικό και προωθεί την κίνηση σε αυτή την τοπική θύρα — σας δίνει ένα καθαρό https://app.yourdomain.com και σας επιτρέπει να τρέχετε πολλές εφαρμογές πίσω από μία IP. Ορίστε οι δύο συνηθισμένοι δρόμοι.

Προϋποθέσεις

Επιλογή A — Caddy (αυτόματο HTTPS, μία γραμμή)

sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy

Αυτό ήταν — το Caddy αποκτά ένα πιστοποιητικό Let's Encrypt για τον τομέα και το ανανεώνει αυτόματα.

Επιλογή B — nginx + Certbot

sudo apt install -y nginx certbot python3-certbot-nginx

Δημιουργήστε το /etc/nginx/sites-available/app:

server {
    listen 80;
    server_name app.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Ενεργοποιήστε το και προσθέστε HTTPS:

sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com

Το Certbot επεξεργάζεται τη διαμόρφωση για να εξυπηρετεί HTTPS και ρυθμίζει την αυτόματη ανανέωση.

Ειλικρινείς προειδοποιήσεις

Επόμενα βήματα

Ο αντίστροφος proxy είναι ακριβώς αυτό που επιτρέπει σε έναν διακομιστή να εξυπηρετεί πολλά πράγματα — δείτε αυτο-φιλοξενία πολλών υπηρεσιών πίσω από μία IP. Τρέχετε την εφαρμογή σε ένα container; Ξεκινήστε με το πώς να εγκαταστήσετε το Docker. Για να επιβιώνει η ίδια η εφαρμογή από επανεκκινήσεις και κρασαρίσματα, δείτε πώς να δημιουργήσετε μια υπηρεσία systemd.

Συχνές ερωτήσεις

Τι είναι ο αντίστροφος proxy και γιατί τον χρειάζομαι;

Η εφαρμογή σας συνήθως ακούει σε μια τοπική θύρα όπως 127.0.0.1:3000. Ο αντίστροφος proxy στέκεται μπροστά στις θύρες 80/443, τερματίζει το HTTPS και προωθεί τα αιτήματα σε αυτή την τοπική θύρα. Σας δίνει έναν καθαρό τομέα, ένα έγκυρο πιστοποιητικό TLS και τη δυνατότητα να τρέχετε πολλές εφαρμογές πίσω από μία IP — χωρίς η ίδια η εφαρμογή να χρειάζεται να κάνει τίποτα από αυτά.

nginx ή Caddy — τι να διαλέξω;

Το Caddy είναι ο ταχύτερος δρόμος: αποκτά και ανανεώνει αυτόματα πιστοποιητικά Let's Encrypt, και ένας λειτουργικός proxy HTTPS είναι μία γραμμή διαμόρφωσης. Το nginx είναι πιο γνωστό και πιο ευέλικτο, αλλά για TLS προσθέτετε το Certbot. Θέλετε HTTPS με τον λιγότερο κόπο, πάρτε Caddy· ξέρετε ήδη nginx ή θέλετε τις δυνατότητές του, πάρτε nginx.

Χρειάζομαι τομέα;

Για ένα αξιόπιστο πιστοποιητικό HTTPS, ναι — το Let's Encrypt εκδίδει πιστοποιητικά για ονόματα τομέα, όχι για γυμνές IP. Δείξτε μια εγγραφή A στην IP του διακομιστή σας, περιμένετε τη διάδοση DNS, και ο proxy θα μπορέσει να αποκτήσει πιστοποιητικό για αυτό το όνομα.

Ποιες θύρες πρέπει να είναι ανοιχτές;

80 και 443 εισερχόμενες. Η θύρα 80 χρησιμοποιείται για την αρχική πρόκληση πιστοποιητικού και την ανακατεύθυνση στο HTTPS· η 443 εξυπηρετεί την κρυπτογραφημένη κίνηση. Ανοίξτε και τις δύο στο τείχος προστασίας σας (δείτε τον οδηγό UFW) και βεβαιωθείτε ότι τίποτα άλλο δεν τις κατέχει ήδη.

Γιατί αποτυγχάνει η έκδοση πιστοποιητικού;

Σχεδόν πάντα DNS ή θύρες. Η εγγραφή A του τομέα πρέπει να δείχνει σε αυτόν τον διακομιστή και να έχει διαδοθεί, και οι θύρες 80/443 να είναι προσβάσιμες (ανοιχτές στο τείχος προστασίας, μη μπλοκαρισμένες ανάντη). Διορθώστε αυτά τα δύο και η έκδοση πετυχαίνει· Caddy και Certbot δοκιμάζουν ξανά και τα δύο.

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.

Αφήστε ένα σχόλιο

Τα σχόλια ελέγχονται πριν εμφανιστούν.