Κεφάλαιο 5 · 5.3
Μια εφαρμογή πίσω από reverse proxy
Πολλές εφαρμογές έχουν τον δικό τους μικρό web server σε μια θύρα, όπως 3001 ή 5678. Αυτή τη θύρα δεν την ανοίγετε προς το internet. Ο web server σας λαμβάνει την κίνηση στη θύρα 443 με https και τη μεταβιβάζει στην εφαρμογή: αυτό είναι ένας reverse proxy.
Με Caddy
Αν η εφαρμογή ακούει στον ίδιο τον server στη θύρα 3001:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Το Caddy μεταβιβάζει αυτόματα τις σωστές κεφαλίδες (όπως X-Forwarded-For και X-Forwarded-Proto) και τα websockets. Αν η εφαρμογή εκτελείται σε Docker δίπλα στο Caddy, χρησιμοποιήστε το όνομα του container, όπως στο Ο φάκελος εργασίας σας με compose.yaml, .env και Caddy.
Με nginx
server {
listen 80;
listen [::]:80;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Στη συνέχεια εκτελέστε sudo nginx -t, sudo systemctl reload nginx και sudo certbot --nginx -d status.example.com.
Καλό να γνωρίζετε
- Αφήστε την εφαρμογή να ακούει μόνο στο
127.0.0.1και όχι σε όλες τις διευθύνσεις. Έτσι κανείς δεν μπορεί να παρακάμψει τον proxy σας. - Πολλές εφαρμογές θέλουν να γνωρίζουν σε ποια διεύθυνση είναι προσβάσιμες, για παράδειγμα με μια ρύθμιση όπως
DOMAINήN8N_HOST. Συμπληρώστε εκεί τη διεύθυνση https. - Μια οθόνη διαχείρισης που δεν προορίζεται για όλους, προστατέψτε την επιπλέον: με κωδικό πρόσβασης στην ίδια την εφαρμογή, με επαλήθευση δύο βημάτων ή μόνο μέσω SSH tunnel (δείτε Ένα αρχείο ρυθμίσεων SSH: σύνδεση με ένα σύντομο όνομα).
- Πρόσθετες κεφαλίδες ασφαλείας, όπως το HSTS, τις ορίζετε με
headerστο Caddy ή μεadd_headerστο nginx. Ενεργοποιήστε το HSTS μόνο όταν το https λειτουργεί σωστά παντού.
